python单链表的实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python单链表的实现相关的知识,希望对你有一定的参考价值。

‘‘‘ 当加入第一个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

以上是关于python单链表的实现的主要内容,如果未能解决你的问题,请参考以下文章

python实现单链表的反转

python实现单链表的增删改查

python实现单链表的增删改查

用Python实现单链表的头插,尾插和中插

python单链表的实现

单链表~增删查改(附代码)~简单实现