此为历史版本和 IPFS 入口查阅区,回到作品页
shixiaolong0
IPFS 指纹 这是什么

作品指纹

用Python实现链表

shixiaolong0
·
有点像递归的实现原理

```

class Node:
    def __init__(self, value):
        self.value = value
        self.next = None


class LinedList:
    def __init__(self):
        # 是头也是整条链,通过None实现嵌套了多个Node实例,有多少个节点就嵌套了多少层,每个节点有两个属性,一个是值,另一个指向下一个节点的指针,恰好就对应了Node的两个类属性
        # Node的属性实际存的是下一个节点的整个对象,而非一个指针或地址;每一层的next中都是存了下一个节点的整个对象,有点递归的感觉
        self.head = None

    def add_node(self,value):
        """
        添加节点
        last_node = self.head  这里由于self.head对应的非空对象是一个可变对象,故last_node的任何修改其实就是在修改self.head
        """
        # 首个节点
        if not self.head:
            self.head = Node(value)
            return
        # 非首个节点
        last_node = self.head
        while last_node.next:
            last_node = last_node.next
        last_node.next = Node(value)

    def print_linkedlist(self):
        """
        打印链表所有节点的值
        """
        current_node = self.head
        while current_node:
            print(current_node.value)
            current_node = current_node.next

if __name__ == '__main__':

    L = LinedList()
    L.add_node(1)
    L.add_node(2)
    L.add_node(3)
    L.add_node(4)
    L.print_linkedlist()


```

CC BY-NC-ND 4.0 授权