自定义链表 实现链表反转
描述:
输入123456
输出654321
利用堆栈实现链表反转
a=[]
a.append(1)
a.append(2)
a.append(3)
a.append(4)
while(a):
print(a.pop())
自定义链表
class node():
def __init__(self, elem, next=None):
if isinstance(elem, int):
self.elem = elem
self.next = next
elif isinstance(elem, list):
self.elem = elem[0]
self.next = None
curr = self
for i in range(1, len(elem)):
pre = node(elem[i])
curr.next = pre
curr = curr.next
def chain_reverse(curr):
if curr == None or curr.next == None:
return curr
# 先初始化
pre = None
next = None
while (curr != None):
# 为使得链表不断裂 需要保存相关节点
next = curr.next# 保存链表结构
curr.next = pre# 改变链表方向 ,反转链表
pre = curr
# 依次处理后面的链表
curr = next
return pre
if __name__ == '__main__':
# 创建链表 单个元素
L = node(1)
L.next = node(2)
L.next.next = node(3)
L.next.next.next = node(4)
res = node.chain_reverse(L)
print(res.elem, res.next.elem, res.next.next.elem, res.next.next.next.elem)
#4321
while res:
print(res.elem,end=' ')
res = res.next
#4321
print()
# lista=[1,2,3,4,5,6]
lista = [1, 2, 3, 4, 5, 6]
# 创建链表
List_a = node(lista)
# 反转链表
res1 = node.chain_reverse(List_a)
while res1:
print(res1.elem,end=' ')
res1 = res1.next
#654321
版权声明:本文为Elvis__c原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。