shixiaolong0
shixiaolong0

变化!如果今天的自己和昨天点自己没有差异,那么就是白活! 简书:https://www.jianshu.com/u/dd76e4af1f33 twitter:https://twitter.com/dragon72463399 rust学习笔记:https://dev.to/dragon72463399

用Python实现链表

有点像递归的实现原理

```

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 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论