这是了解如何在Python中实现链接列表的简单指南。
本文的目的是增强您对python-simplified中单链接列表的理解。
链接列表是计算机科学中的数据结构,该数据结构存储了一个称为节点的元素序列,其中每个节点包含一个参考或指针指向列表中的下一个节点。该列表由一系列节点组成,每个节点都包含一个数据,并引用了序列中的下一个节点。
链接列表可用于实现各种数据结构,包括堆栈,队列和关联阵列。它们比阵列具有多个优势,包括有效的插入和删除操作,以及根据需要轻松生长或缩小清单的能力。但是,它们也有一些缺点,例如单个元素的访问时间较慢,并且需要更多的内存开销来存储指针。
有几种类型的链接列表,包括单链接列表,双重链接列表和循环链接列表,每种列表都有自己的特征和优势。
如何在Python中实现链接列表
我相信,在Python中实现链接列表的最佳方法是使用类和对象。这是一个示例:
class Node:
def __init__(self, data):
self.data = data
self.next = None
定义了一个节点类以表示链接列表中的每个节点。该节点有两个属性:数据存储该节点的数据,下一个存储对下一个节点的引用。
再次,我还有另一个名为linkedlist类的类,以表示链接列表本身。这具有存储第一个节点的引用的属性头。
请阅读代码中的评论以更好地理解。
class Linkedlist:
def __init__(self):
self.head = None
# this methods returns if the head is empty
def isempty(self):
return self.head is None
# creating my first node
def firstNode(self,data):
# I create an instance of the class Node(data)
newNode = Node(data)
# Now I link the refrence of the newNode to head
newNode.next = self.head
# Assign head to point to newNode
self.head = newNode
def lastNode(self, data):
newNode = Node(data)
# check to know if the refrence of head is empty
if self.isempty():
# if the statement is true, then link the node to the head
newNode.next = self.head
else:
# otherwise create a newNode
current = self.head
# current becomes a new instance of head
while current is not None:
# cycle through when the condition is true
current = current.next
# Now, i want current to point to a new address reference
current.next = newNode
# Anytime the current variable points to a new reference, a new Node should be created.
接下来,我们将研究如何删除/pop第一个节点,然后是最后一个节点
def remove_firstNode(self, data):
# check if head is empty and return Nothing
if self.isempty():
return None
else:
tmp = self.head
# tmp variable will hold the value of head
self.head = self.head.next
# head should point to the next address so that we can pop or remove the immediate node
return tmp
def remove_lastNode(self, data):
if self.isempty():
return None
elif self.head.next is not None:
# check if head is pointing to an address
tmp = self.head
self.head = None
# self.head will become None and return the tmp.data value
return tmp.data
else:
current = self.head
while current.next.next is not None:
# return true when the statement is valid
current = current.next
tmp = current.next
current.next = None
return tmp.data
就是这样!我希望这可以增强您对在Python中实现单一链接列表的理解。对于任何更正,请与我联系或在下面发表评论。
另外,请尽力而为,并在这里关注我以获取更多文章。欢呼!