📝 数据结构和算法
20661篇技术文档📅  最后修改于: 2020-10-15 04:40:23        🧑  作者: Mango
问:程序创建n个节点的双链表并计算节点数。说明在此程序中,我们将创建一个双向链接列表,并计算列表中存在的节点数。要对节点进行计数,我们通过将计数器加1来遍历列表。双链列表上方显示的节点数为5。算法定义一个Node类,该类代表列表中的一个节点。它具有三个属性:数据,前一个将指向上一个节点,下一个将指向下一个节点。定义另一个用于创建双向链接列表的类,它具有两个节点:head和tail。最初,头和尾将指...
📅  最后修改于: 2020-10-15 04:41:47        🧑  作者: Mango
问:程序创建n个节点的双向链接列表并以相反的顺序显示。说明在此程序中,我们创建一个双向链接列表,然后通过反转列表的方向来反转列表并print出节点。通过将每个节点的上一个指针与下一个指针交换来遍历列表。然后,交换头节点和尾节点的位置,即原始列表的头将变为新列表的尾部,原始列表的尾部将变为新列表的头。因此,反向列表将是:算法定义一个Node类,该类代表列表中的一个节点。它具有三个属性:数据,前一个将...
📅  最后修改于: 2020-10-15 04:43:03        🧑  作者: Mango
问:程序创建和显示一个双向链接列表。说明在此程序中,我们将创建一个双向链接列表,并print列表中存在的所有节点。双链表:双链表是链表的一种变体。链表是一个线性数据结构,可以描述为节点的集合。节点通过指针连接。每个节点包含两个字段:数据和指向下一个字段的指针。链接列表的第一个节点称为头,列表的最后一个节点称为尾部。单链表的局限性之一是只能在向前的一个方向上遍历。双链列表通过提供指向先前节点的附加指...
📅  最后修改于: 2020-10-15 04:58:13        🧑  作者: Mango
问:程序从双向链表的开头删除一个新节点。说明在此程序中,我们将创建一个双向链接列表,并从列表的开头删除一个节点。如果列表为空,则print消息“列表为空”。如果列表不为空,那么我们将使头部指向列表中的下一个节点;我们将删除第一个节点。考虑上面的例子,new是列表的头。使头指向列表中的下一个节点。现在,节点1将成为列表的新头,从而删除节点new。算法定义一个Node类,该类代表列表中的一个节点。它具...
📅  最后修改于: 2020-10-15 04:59:39        🧑  作者: Mango
问:程序从双链表的末尾删除一个新节点。说明在此程序中,我们将创建一个双向链接列表,并从列表末尾删除一个节点。如果列表为空,则print消息“列表为空”。如果列表不为空,则尾部的前一个节点将成为列表的新尾部,从而从列表中删除最后一个节点。在上面的示例中,节点new是列表的结尾。将尾部的前一个节点(即节点4)作为列表的尾部。节点4的下一个将指向null。算法定义一个Node类,该类代表列表中的一个节点...
📅  最后修改于: 2020-10-15 05:01:10        🧑  作者: Mango
问:程序从双链表的中间删除一个新节点。说明在此程序中,我们将创建一个双向链接列表,并从列表中间删除一个节点。如果列表为空,则显示消息“列表为空”。如果列表不为空,我们将计算列表的大小,然后将其除以2得到列表的中点。电流将指向头节点。我们将遍历列表直到到达中点。现在,电流将指向中间节点。我们删除中间节点,使当前的上一个节点指向当前的下一个节点。考虑上面的例子,上面列表的中点是3。迭代从头到中点的电流...
📅  最后修改于: 2020-10-15 05:02:37        🧑  作者: Mango
问:程序从双向链表中查找最大值和最小值节点。说明在此程序中,我们将创建一个双向链接列表,然后遍历该列表以找出最小和最大节点。我们将维护两个变量min和max。最小值将保存最小值节点,最大值将保存最大值节点。在上面的示例中,1将是最小值节点,而9将是最大值节点。算法定义一个Node类,该类代表列表中的一个节点。它具有三个属性:数据,前一个将指向上一个节点,下一个将指向下一个节点。定义另一个类来创建双...
📅  最后修改于: 2020-10-15 05:03:56        🧑  作者: Mango
问:程序在双链表的开头插入一个新节点。说明在此程序中,我们将创建一个双向链接列表,并将每个新节点插入列表的开头。如果列表为空,则头和尾将指向新添加的节点。如果列表不为空,则在列表的开头插入新节点,以便头的前一个节点指向新节点。将新节点作为列表的头,其前一个将指向null。考虑上面的例子。最初,1是列表的头。现在,将在节点1之前插入new,以便节点1的前一个指向new。将new作为列表的开头,其上一...
📅  最后修改于: 2020-10-15 05:05:16        🧑  作者: Mango
问:程序在双链表的末尾插入一个新节点。说明在此程序中,我们将创建一个双向链接列表,并将每个新节点插入列表的末尾。如果列表为空,则头和尾将指向新添加的节点。如果list不为空,则在列表末尾插入新节点,以使尾部的下一个指向新节点。将新节点设置为列表的新尾部,其下一个将指向null。在上面的示例中,节点4是列表的尾部。现在,新节点将插入到列表的末尾,以便节点4的下一个将指向新节点。将新节点作为列表的尾部...
📅  最后修改于: 2020-10-15 05:06:51        🧑  作者: Mango
问:程序在双链表的中间插入一个新节点。说明在此程序中,我们创建一个双向链接列表,并在列表中间插入一个新节点。如果列表为空,头和尾都将指向新节点。如果list不为空,则我们将计算列表的大小并将其除以2,以得到需要插入新节点的列表的中点。考虑上图;需要将一个新节点添加到列表的中间。首先,我们计算大小(在这种情况下为4)。因此,要获得中点,我们将其除以2,然后将其存储在变量mid中。节点电流将指向头部。...
📅  最后修改于: 2020-10-15 05:08:20        🧑  作者: Mango
问:程序从双链表中删除重复的元素。说明在此程序中,我们将创建一个双向链接列表,并通过遍历列表来删除重复项(如果存在)。原始清单:删除重复项后的列表:在上面的列表中,节点2被重复三次,节点3被重复两次。当前将指向头,索引将指向当前旁边的节点。开始遍历列表,直到找到重复项,即当前数据等于索引数据。在上面的示例中,第一个副本位于位置4。将索引分配给另一个节点temp。将索引的上一个节点与索引的下一个节点...
📅  最后修改于: 2020-10-15 05:09:48        🧑  作者: Mango
问:程序旋转N个节点的双向链表。说明在此程序中,我们需要创建一个双向链接列表,并将其旋转n个节点。这可以通过维护从头节点开始并遍历列表直到当前指针指向第n个节点的指针来实现。将列表从头移到第n个节点,并将其放在尾部之后。现在,第n个节点将成为列表的尾部,第n个节点旁边的节点将成为新的头。在此,n应始终大于0但小于列表的大小。原始清单:将其旋转3个节点后的列表:在上面的示例中,我们需要将列表旋转3个...
📅  最后修改于: 2020-10-15 05:11:06        🧑  作者: Mango
问:在双向链表中搜索元素的程序说明在此程序中,我们需要在双向链表中搜索给定的节点。为了解决这个问题,我们将使用节点电流遍历列表。当前指向头部并开始将搜索到的节点数据与当前节点数据进行比较。如果它们相等,则将标志设置为true并print消息以及搜索到的节点的位置。对于例如在上面的列表中,搜索节点说可以在位置3找到4。算法定义一个Node类,该类代表列表中的一个节点。它具有三个属性:数据,前一个将指...
📅  最后修改于: 2020-10-15 05:46:16        🧑  作者: Mango
问:程序以排序双向链表的元素。说明在此程序中,我们将创建一个双向链接列表,并以升序对列表节点进行排序。排序列表:为此,我们维护两个指针:current和index。最初,当前指向头节点,索引将指向当前旁边的节点。通过将当前数据与索引数据进行比较,遍历列表直到当前指向null。如果当前数据大于索引数据,则在它们之间交换数据。在上面的示例中,current最初将指向7,而索引将指向1。由于7大于1,因...
📅  最后修改于: 2020-10-15 05:47:27        🧑  作者: Mango
问:程序创建一个n个节点的循环链表,并计算节点数。说明在此程序中,我们必须找出循环链接列表中存在的节点数。我们首先创建循环链接列表,然后遍历列表并将变量“ count”增加1。算法定义一个Node类,该类代表列表中的一个节点。它具有两个属性数据,下一个将指向下一个节点。定义另一个用于创建循环链接列表的类,它具有两个节点:head和tail。它有两种方法:add()和display()。add()会...