如何在Python中实现链接列表
#python #算法 #linkedlist

这是了解如何在Python中实现链接列表的简单指南。

本文的目的是增强您对python-simplified中单链接列表的理解。

链接列表是计算机科学中的数据结构,该数据结构存储了一个称为节点的元素序列,其中每个节点包含一个参考或指针指向列表中的下一个节点。该列表由一系列节点组成,每个节点都包含一个数据,并引用了序列中的下一个节点。

链接列表可用于实现各种数据结构,包括堆栈,队列和关联阵列。它们比阵列具有多个优势,包括有效的插入和删除操作,以及根据需要轻松生长或缩小清单的能力。但是,它们也有一些缺点,例如单个元素的访问时间较慢,并且需要更多的内存开销来存储指针。

有几种类型的链接列表,包括单链接列表,双重链接列表和循环链接列表,每种列表都有自己的特征和优势。

如何在Python中实现链接列表

Linked List Image

我相信,在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中实现单一链接列表的理解。对于任何更正,请与我联系或在下面发表评论。

另外,请尽力而为,并在这里关注我以获取更多文章。欢呼!