python单链表的实现
admin
2023-07-08 00:22:42
0次
'''
当加入第一个node节点的时候,会有几个值,(这里的self.tail.next 其实就是node.next)
head = item = tail = Node(object element1 memory)
item = head = tail = Node(object element1  memory)
next = None
tail = item = head = Node(object element1  memory)

当加入第二个元素node节点的时候,next1值会改变,tail会向后漂移,head将会保留
新加入第二个元素后第一个节点变成了
head = item1 = Node(object element1  memory)
item1= head = Node(object element1  memory)
next = Node(object element2  memory)

第二个节点为:
item = tail =  Node(object element2  memory)
next =  Node(object element2  memory)
tail = item =  Node(object element2  memory)

当加入第三个元素的时候,tail.next继续为None item为新元素tail结束元素为新元素,
item = tail =  Node(object element3  memory)
next = None
tail = item =  Node(object element3  memory)
'''

class Node:
    def __init__(self,item,next=None):
        self.item = item #记录元素
        self.next = next #记录下一跳节点

    #为了输出 我们可以看到的结果:
    def __repr__(self):
        return '{} ==> {}'.format(self.item,self.next)

class LinkedList:
    def __init__(self):
        self.head= None
        self.tail = None

    def append(self,value):
        #添加链表前需要,实例化一个节点,来进行赋值
        node = Node(value) #实例化节点
        #添加链表,首先判断链表是否为空,
        # 空列表时 head= tail = None
        #添加元素后head = value = tail = Node(value) = node
        if self.head == None:
            self.head = node
            # self.tail = node
        #当链表不为空时向后添加,既是向后添加,添加后的值为
        # self.tail.next = Node(last(value)).next = node
        #要知道self.tail值的改变是不应为append的改变而改变了,只是再重新赋值之后才会改变的
        # self.tail = node #现在的结尾部分被重新赋值
        else:
            self.tail.next = node #如果添加的是最后一位,next就是默认值既是None
            # self.tail = node
        # if和slse有公共部分self.tail = node可以直接提出来,
        self.tail = node

    def iternode(self):
        #这里的迭代可以使用我们定义好的方法来做,因为每个node节点都有next可以调用下一个节点,因此我们可以利用这一特性来做迭代
        #因为我们不知道需要迭代的个数有多少个,因此只能使用yield配合while循环来做,然后使用节点的下一个来重赋值,知道current为None,while循环结束
        current = self.head
        while current:
            yield current
            current = current.next
ll = LinkedList()
ll.append(1)
ll.append(2)
ll.append(3)
for i in ll.iternode():
    print(i)

输出结果为:

1 ==> 2 ==> 3 ==> None
2 ==> 3 ==> None
3 ==> None

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...