📝 数据结构和算法

20661篇技术文档
  数据结构示例-单向链表删除中间节点

📅  最后修改于: 2020-10-15 03:24:23        🧑  作者: Mango

从单链列表中间删除新节点的程序说明在此程序中,我们将创建一个单链列表并从列表中间删除一个节点。为了完成此任务,我们将计算列表的大小,然后将其除以2得到列表的中点。节点温度将指向头节点。我们将遍历列表直到到达中点。现在,温度将指向中间节点,而节点当前将指向温度之前的节点。我们删除中间节点,以便当前的下一个节点将指向temp的下一个节点。考虑上面的示例,上面列表的中点是2。从头到中点迭代温度。现在,t...

  数据结构示例-单向链表删除末尾节点

📅  最后修改于: 2020-10-15 03:26:46        🧑  作者: Mango

从单链列表末尾删除节点的程序说明在此程序中,我们将创建一个单链列表并从列表末尾删除一个节点。为了完成此任务,我们首先找出列表的倒数第二个节点。然后,将倒数第二个节点作为列表的新尾部。然后,删除列表的最后一个节点。在上面的示例中,Node是列表的尾部。遍历列表以找出倒数第二个节点,在本例中为节点4。使节点4为列表的尾部。节点4的下一个将指向null。算法创建一个具有两个属性的类Node:data和n...

  数据结构示例-判断单向链表是否有回文

📅  最后修改于: 2020-10-15 03:28:14        🧑  作者: Mango

确定单个链接列表是否为回文式的程序说明在此程序中,我们需要检查给定的单链表是否是回文。回文列表是与之相反的列表。上图中给出的列表是回文,因为它等同于其反向列表,即1、2、3、2、1。要检查列表是否是回文,我们遍历该列表并检查是否有来自起始部分与结束部分中的任何元素都不匹配,然后将变量标志设置为false并中断循环。最后,如果标志为假,则列表为回文,否则为非。下面给出检查列表是否为回文的算法。算法创...

  数据结构示例-查找单向链表中最大和最小值节点

📅  最后修改于: 2020-10-15 03:29:43        🧑  作者: Mango

程序从单个链接列表中查找最大值和最小值节点说明在此程序中,我们需要在给定的单链列表中找出最小值和最大值节点。我们将维护两个变量min和max。最小值将保存最小值节点,最大值将保存最大值节点。在上面的示例中,1将是最小值节点,8将是最大值节点。下面给出了找到最大和最小节点的算法。算法创建一个具有两个属性的类Node:data和next。下一个是指向列表中下一个节点的指针。创建另一个具有两个属性的Mi...

  数据结构示例-单向链表的中间插入新节点

📅  最后修改于: 2020-10-15 03:31:10        🧑  作者: Mango

程序在单链列表的中间插入一个新节点说明在此程序中,我们将创建一个单链接列表,并在列表中间添加一个新节点。为了完成此任务,我们将计算列表的大小,然后将其除以2,以获取列表的中点,需要在其中插入新节点。考虑上图;节点1代表原始列表的头。让node New是需要添加到列表中间的新节点。首先,我们计算大小(在这种情况下为4)。因此,要获得中点,我们将其除以2并将其存储在变量计数中。节点电流将指向头部。首先...

  数据结构示例-单向链表的头部插入新节点

📅  最后修改于: 2020-10-15 03:32:26        🧑  作者: Mango

程序在单链表的开头插入一个新节点说明在此程序中,我们将创建一个单链接列表,并在列表的开头添加一个新节点。为了完成此任务,我们将头存储到临时节点temp。将新添加的节点作为列表的新标题。然后,在新头后面添加temp(旧头)。考虑上面的清单;节点1代表原始列表的头。令node New为需要在列表开头添加的新节点。节点温度将指向头,即1。将New设为列表的新头,并在新头之后添加temp,以使New旁边的...

  排序算法-Tim Sort

📅  最后修改于: 2020-10-15 03:36:24        🧑  作者: Mango

Tim-sortTim-sort是一种从插入排序和合并排序派生的排序算法。它旨在以最佳方式对不同种类的现实世界数据执行。这是一种自适应排序算法,需要O(n log n)比较才能对n个元素的数组进行排序。它是由Tim Peters在2002年以Python编程语言设计和实现的。从2.3版开始,它一直是python的标准排序算法。技术考虑需要排序的n个元素的数组。在Tim排序中,数组分为几个部分,每个...

  数据结构示例-单向链表末端插入新节点

📅  最后修改于: 2020-10-15 04:24:08        🧑  作者: Mango

程序在单链列表的末尾插入一个新节点说明在此程序中,我们将创建一个单链接列表,并在列表末尾添加一个新节点。要完成此任务,请在列表尾部之后添加一个新节点,以使尾部的下一个指向新添加的节点。然后,将此新节点作为列表的新尾部。考虑上面的清单;节点4代表原始列表的尾部。让node New是需要在列表末尾添加的新节点。使4旁边指向新。将New设为列表的新尾。算法创建一个具有两个属性的类Node:data和ne...

  数据结构示例-删除单向链表中重复的元素

📅  最后修改于: 2020-10-15 04:27:39        🧑  作者: Mango

程序从单链列表中删除重复的元素说明在此程序中,我们需要从给定的单链列表中删除重复的节点。原始清单:删除重复节点后的列表:在上面的列表中,节点2重复三次,节点1重复两次。当前节点将指向头,索引将指向当前节点。开始遍历列表,直到找到重复项,即当前数据等于索引数据。在上面的示例中,第一个副本位于位置4。将电流分配给另一个节点temp。将temp的下一个节点与索引的下一个节点连接。删除指向重复节点的索引。...

  数据结构示例-单向链表中搜索元素

📅  最后修改于: 2020-10-15 04:28:53        🧑  作者: Mango

程序以搜索单链列表中的元素说明在此程序中,我们需要在给定的单链列表中搜索一个节点。为了解决这个问题,我们将使用节点电流遍历列表。当前指向头部并开始将搜索到的节点数据与当前节点数据进行比较。如果它们相等,则将标志设置为true并print消息以及搜索到的节点的位置。对于例如在上面的列表中,搜索节点说4,可以在位置4找到。算法创建一个具有两个属性的类Node:data和next。下一个是指向列表中下一...

  数据结构示例-单向链表元素排序

📅  最后修改于: 2020-10-15 04:33:16        🧑  作者: Mango

程序对单链表的元素进行排序说明在此程序中,我们需要按升序对给定单链列表的节点进行排序。原始清单:排序列表:为了完成此任务,我们维护两个指针:current和index。最初,当前指向头节点,索引将指向当前旁边的节点。通过将当前数据与索引数据进行比较,遍历列表直到当前指向null。如果当前数据大于索引数据,则在它们之间交换数据。在上面的示例中,current最初将指向9,index将指向7。由于9大...

  数据结构示例-单向链表交换节点但不交换数据

📅  最后修改于: 2020-10-15 04:34:45        🧑  作者: Mango

程序在不交换数据的情况下交换单链列表中的节点说明在此程序中,我们需要交换单链表中的给定两个节点而不交换数据。完成此任务的方法之一是交换给定两个节点中的前一个节点,然后交换两个节点中的下一个节点。算法创建一个具有两个属性的类Node:data和next。下一个是指向列表中下一个节点的指针。创建另一个具有两个属性的类SwapNodes:head和tail。addNode()将向列表添加一个新节点:创建...

  数据结构示例-交换单向链表第一个和最后一个节点

📅  最后修改于: 2020-10-15 04:36:14        🧑  作者: Mango

程序交换第一个链表中的最后一个元素说明在此程序中,我们需要将单链列表的最后一个节点与第一个节点交换,以便第一个节点将成为最后一个节点,而最后一个节点将成为第一个节点。考虑上面的例子;节点1代表列表的开头,节点4代表最后一个节点。为了将第一个节点与最后一个节点交换,我们将遍历列表,以使索引指向第二个最后一个节点,而current指向最后一个节点。节点温度将指向头。然后,将当前(最后一个节点)作为列表...

  数据结构示例-二叉树转换为双向链表

📅  最后修改于: 2020-10-15 04:37:33        🧑  作者: Mango

问:程序将给定的二叉树转换为双向链表。说明在此程序中,我们需要将给定的二叉树转换为相应的双喜好列表。二叉树是一种树数据结构,其中每个节点最多具有两个子节点。这可以通过按顺序遍历树来实现,即,左子节点->根->右节点。遍历左子树并将其添加到列表的末尾,从而将其转换为双向链表。这样,最左边的节点将成为列表的头。然后,将正确的子树转换为双向链表。二叉树:对应的双向链表:算法定义一个Node类,该类代表二...

  数据结构示例-利用三叉树创建双向链表

📅  最后修改于: 2020-10-15 04:39:02        🧑  作者: Mango

问:程序从三叉树创建一个双向链接列表。说明在此程序中,给定的三叉树将转换为相应的双向链表。三叉树是一个分层的数据结构,其中每个节点最多可以有三个孩子。这可以通过以预排序方式遍历三叉树来完成,即根->左子->中间子->右子。首先,遍历根节点并将其添加到列表中。然后,分别添加其左,中和右子树。三元树:对应的双向链表:算法定义一个Node类,该类代表三叉树中的一个节点。它具有四个属性:数据,左,中,右,...