Python数据结构 LinkedList
一个LinkedList是一个数据元素的序列,它通过链接连接在一起。每个数据元素都包含一个与另一个数据元素的连接,其形式是一个指针。Python 在其标准库中没有LinkedList。我们使用前一章中讨论的节点的概念来实现LinkedList的概念。
我们已经看到了如何创建一个节点类以及如何遍历一个节点的元素。在这一章中,我们将研究被称为单链表的链表类型。在这种类型的数据结构中,任何两个数据元素之间只有一个链接。我们创建这样一个列表,并创建额外的方法来插入、更新和删除列表中的元素。
LinkedList的创建
通过使用我们在上一章学习的节点类来创建一个LinkedList。我们创建一个Node对象,并创建另一个类来使用这个ODE对象。我们通过节点对象传递适当的值来指向下一个数据元素。下面的程序创建了有三个数据元素的LinkedList。在下一节中,我们将看到如何遍历这个LinkedList。
LinkedList的遍历
单链表只可以从第一个数据元素开始,以前进的方向进行遍历。我们只需通过将下一个节点的指针分配给当前数据元素来打印下一个数据元素的值。
例子
输出
当上述代码被执行时,它产生了以下结果 –
在LinkedList中的插入
在链表中插入元素涉及到将现有节点的指针重新分配给新插入的节点。根据新的数据元素是在链表的开头、中间还是结尾插入,我们有以下几种情况。
在开始处插入
这包括将新数据节点的下一个指针指向链表的当前头部。因此,链表的当前头部成为第二个数据元素,新节点成为链表的头部。
例子
输出
当上述代码被执行时,它产生了以下结果 –
在末端插入
这涉及到将LinkedList的当前最后一个节点的下一个指针指向新的数据节点。因此,当前LinkedList的最后一个节点成为第二个最后的数据节点,新节点成为LinkedList的最后一个节点。
例子
输出
当上述代码被执行时,它产生了以下结果 –
在两个数据节点之间插入
这涉及到改变特定节点的指针以指向新的节点。这可以通过传入新节点和现有节点来实现,之后新节点将被插入。所以我们定义一个额外的类,它将把新节点的下一个指针改为中间节点的下一个指针。然后将新节点分配给中间节点的下一个指针。
输出
当上述代码被执行时,它产生了以下结果 –
删除一个项目
我们可以使用该节点的键来删除一个现有的节点。在下面的程序中,我们找到要删除的节点的前一个节点。然后,将这个节点的下一个指针指向要删除的节点的下一个节点。
例子
输出
当上述代码被执行时,它产生了以下结果 –