Python 程序将元素添加到链表的第一个和最后一个位置

pythonserver side programmingprogramming

在 Python 中,链表是一种线性数据结构,由一个节点链组成,其中每个节点包含一个值和对链中下一个节点的引用。

在本文中,我们将讨论如何在 Python 中将元素添加到链表的第一个和最后一个位置。

Python 中的链表

链表是一种引用数据结构,包含一组元素。它与数组类似,但数组中的数据存储在连续的内存位置,而链表中的数据不受该条件的约束。这意味着数据不是一个接一个地存储,而是以随机方式存储在内存中。

这引发了一个问题,即我们如何访问链表中的元素?答案在链表中非常直观,一个元素指向另一个元素,直到列表末尾。

列表的开头和结尾被视为特殊位置。列表的开头称为其头部,它指向第一个元素,最后一个元素是特殊的,因为它指向 NULL

头部 -> data_1 -> data_2 -> … -> data_n -> NULL

现在我们知道如何访问链表的开头和结尾,让我们看看如何遍历元素并访问链表中的数据。

遍历链表非常简单,我们只需从头部开始并访问下一个节点;我们继续执行此过程,直到找到下一个节点为 NULL 的节点。至于访问节点中的数据,我们使用箭头运算符"->"。

Head->data

现在我们已经了解了开始解决问题所需的所有知识。

在开头添加元素

要在链接列表的开头添加数据,我们必须考虑链接列表的头部。每当我们在链接列表的开头添加一个节点时,链接列表都会被修改,新添加的节点将成为列表的第一个节点/头部。

算法

步骤 1 – 创建新节点

步骤 2 – 在新创建的节点中添加数据

步骤 3 – 更新新节点的链接并使其指向当前头节点

步骤 4 – 现在使头指针等于新创建的节点

注意 – 这些步骤的顺序最重要,因为如果您先将新创建的节点设为头节点,那么我们将无法更新新节点的链接,而该链接理想情况下应该指向上一个头节点。

示例

class Node:
   def __init__(self, data):
      self.dataPart = data
      self.nextNode = None
class LinkedList:
   def __init__(self):
      self.headNode = None
   def showList(self):
      n = self.headNode
      while n is not None:
         print(n.dataPart, end='-')
         n = n.nextNode
      print('')
   def addBeginList(self, data):
      tempNode = Node(data)
      tempNode.nextNode = self.headNode
      self.headNode = tempNode
newLinkedList = LinkedList()
print("在添加元素之前打印列表:")
newLinkedList.showList()
newLinkedList.addBeginList(10)
newLinkedList.addBeginList(25)
print("在列表开头添加元素后打印元素")
newLinkedList.showList()

输出

在添加任何元素之前打印列表:
\
在列表开头添加元素后打印元素
25-10-\

在末尾添加元素

在末尾添加元素,在逻辑上与在列表开头添加元素不同。这次我们需要访问列表的最后一个节点,而不是第一个节点,即 head。

现在的问题是检查我们尝试添加元素的列表是否为空列表,或者它是否已经包含一些元素。

如果列表为空,则新节点将是列表的第一个节点,否则将是最后一个节点。为此,我们需要检查头节点是否为 None。如果头节点为 None,则列表被视为空,否则不为空。

算法

步骤 1 – 创建新节点。

步骤 2 – 在节点的数据部分添加数据。

步骤 3 – 确保新创建节点的下一个节点指向 None 或 Null 指针。

步骤 4 – 如果列表为空,则将新创建的节点作为头节点。

步骤 5 - 否则遍历到列表末尾的最后一个节点。

步骤 6 – 将最后一个节点的下一个节点设置为新创建的节点。

示例

class Node:
   def __init__(self, data):
      self.dataPart = data
      self.nextNode = None
class LinkedList:
   def __init__(self):
      self.headNode = None
   def showList(self):
      n = self.headNode
      while n is not None:
         print(n.dataPart, end='-')
         n = n.nextNode
      print("")
   def addEndList(self, data):
      tempNode = Node(data)
      if self.headNode is None:
         self.headNode = tempNode
      else:
         n = self.headNode
         while n.nextNode is not None:
            n = n.nextNode
            n.nextNode = tempNode
newLinkedList = LinkedList()
print("插入前打印列表:")
newLinkedList.showList()
newLinkedList.addEndList(25)
newLinkedList.addEndList(10)
print("在列表末尾添加元素后打印列表:")
newLinkedList.showList()

输出

插入前打印列表:
\
在列表末尾添加元素后打印列表:
25-10-\

结论

在本文中,我们讨论了如何使用 Python 类来实现链接列表,以及如何向链接列表添加元素。我们重点介绍了在列表开头和结尾添加元素。


相关文章