自己想了半天才想明白,记录下来,随时回顾。
定义节点类:
class Node():
def __init__(self, cargo=None, next=None):
self.cargo = cargo
self.next = next
def __str__(self):
# 测试基本功能,输出字符串
return str(self.cargo)
通过定义一个一个节点来定义链表:
node1 = Node(1)
node2 = Node(2)
node3 = Node(3)
# 节点之间的关系
node1.next = node2
node2.next = node3
通过输入第一个节点,循环整个链表然后顺序打印整个链表:
def printList(node):
while node:
print node
node = node.next
printList(node1)
1
2
3
使用递归的方法来打印,主要步骤如下:
1.将list拆分成两个部分,head:第一个元素,tail:其余元素
2.向后打印
3.打印第一个元素
'''
从printBackward(1)跳到printBackward(2),再跳到printBackward(3),然后进入printBackward(None).
运行printBackward(None),return后回到printBackward(3)还没结束所以继续运行最后一行的print (head, tail).
等printBackward(3)结束后,又回到了printBackward(2),最后回到printBackward(1),结束函数的运行.
'''
def printBackward(lists):
if lists == None:
return '''return也很神奇,不能省略'''
head = lists
tail = lists.next
print(head, tail)
printBackward(tail) '''这里的递归很神奇'''
print(head, tail)
printBackward(node1)
1 2
2 3
3 None
3 None
2 3
1 2
更简便的倒向输出方法:
def printBackward(lists):
if lists == None:return
printBackward(lists.next)
print lists
printBackward(node1)
3
2
1
敲黑板:
从printBackward(1)跳到printBackward(2),再跳到printBackward(3),然后进入printBackward(None)。
运行printBackward(None),return后回到printBackward(3)还没结束所以继续运行最后一行的print(head, tail)。
等printBackward(3)结束后,又回到了printBackward(2),最后回到printBackward(1),结束函数的运行。
原文链接在这里:
参考:https://blog.csdn.net/qq_39422642/article/details/78988976#:~:text=python%EF%BC%9A%E9%93%BE%E8%A1%A8%E5%AE%9A%E4%B9%89%E4%BB%A5%E5%8F%8A%E5%AE%9E%E7%8E%B0,%E4%B8%8B%E4%B8%80%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84%E9%93%BE%E6%8E%A5.