美文网首页
python数据结构--链表

python数据结构--链表

作者: Hmcf | 来源:发表于2019-12-16 13:59 被阅读0次

    什么是链表?

    熟悉python语法的同学肯定都知道list,但是这并不是真正意义上的链表(linked list)。链表是由一系列的节点(node)来实现的,通过每一个node存储下一个节点的指针来实现一种快速的插入。此外每个节点都有一个cargo包含一定的数据。根据链表结构的不同,其种类可以分为单向链表、单项循环链表、双向链表、双向循环链表等。

    创建链表

    class Linklist:
        def __init__(self):
            self.headval = None
    
    
    class Node:
        def __init__(self, data=None):
            self.data = data
            self.nextval = None
    
    
    # 创建一个空的链表
    ob = Linklist()
    # 为链表添加第一个节点元素
    ob.headval = Node("first")
    
    # 为链表添加第二个节点元素(在第一节点之后)
    n2 = Node("second")
    ob.headval.nextval = n2
    
    # 为链表添加第三个节点元素(在第二节点之后)
    n3 = Node("threed")
    n2.nextval = n3
    
    print(n2)
    print(n2.nextval)
    print(n3)
    # 结果为n3内存地址<__main__.Node object at 0x0000011FF5FECC48>
    print(n2.nextval.data)
    # 结果为n3所代表的值threed
    

    链表首尾添加新的节点

    class Linklist:
        def __init__(self):
            self.headval = None
    
        # 在链表末尾添加一个新的node
        def append(self, newdata):
            NewNode = Node(newdata)
            if self.headval is None:
                self.headval = NewNode
                return
            laste = self.headval
            while (laste.nextval):
                laste = laste.nextval
            laste.nextval = NewNode
    
        # 在链表头部添加一个新的node
        def add_left(self, newdata):
            NewNode = Node(newdata)
            if self.headval is None:
                self.headval = NewNode
                return
            last = self.headval
            self.headval = NewNode
            self.headval.nextval = last
    
        # 打印链表
        def show(self):
            printval = self.headval
            while printval:
                print(printval.data)
                printval = printval.nextval
    

    中间添加节点

    class Linklist:
        def __init__(self):
            self.headval = None
            
        def insert(self,middle_node,newdata):
            if not middle_node:
                print("The mentioned node is absent")
                return
    
            NewNode = Node(newdata)
            NewNode.nextval = middle_node.nextval
            middle_node.nextval = NewNode
    

    相关文章

      网友评论

          本文标题:python数据结构--链表

          本文链接:https://www.haomeiwen.com/subject/zrxdnctx.html