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

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

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

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

Python 中的链表

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

这就提出了一个问题,即我们如何访问链接列表中的元素?答案很直观,在链接列表中,一个元素指向另一个元素,直到列表的末端。

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

Head -> 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("Printing the list before adding element : ")
newLinkedList.showList()
newLinkedList.addBeginList(10)
newLinkedList.addBeginList(25)
print("Printing the elements after adding at the beginning of the list")
newLinkedList.showList()

输出

Printing the list before adding any element :
\
Printing the elements after adding at the beginning of the list
25-10-\

在结尾处添加元素

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

现在的问题是要检查我们要添加元素的列表是否是一个空的列表,或者里面已经有一些元素。

如果列表是空的,那么新节点将是列表的第一个节点,而在其他情况下,它将是最后一个节点。为此我们需要检查头部节点是否为无。如果头部为无,则列表被视为空,否则就不为空。

算法

第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("Printing the list before insertion : ")
newLinkedList.showList()
newLinkedList.addEndList(25)
newLinkedList.addEndList(10)
print("Printing the list after adding elements at the end of the list : ")
newLinkedList.showList()

输出

Printing the list before insertion :
\
Printing the list after adding elements at the end of the list :
25-10-\

结语

在这篇文章中,我们讨论了如何使用 python 类来实现一个链表,以及如何向链表 中添加元素。我们重点讨论了在列表的开头和结尾添加元素。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python 示例