1、链表创建、翻转及遍历
单链表反转详解参考:单链表反转_python版
class CreateNode(object):
'''创建链表节点'''
def __init__(self,data,next = None):
self.data = data
self.next = next
def create_list_link(list_length):
'''创建链表'''
head = None
for count in range(1, list_length+1):
head = CreateNode(count, head)
return head
def traverse_list_link(head):
'''遍历链表'''
if head == None:
print("链表为空", end='')
probe = head
# 输出节点内容,输出完后,单链表结构依然存在
while probe != None:
print(probe.data, end=", ")
probe = probe.next
print()
def overturn_list_link(head):
'''翻转链表'''
overturnhead = head
pre = None
while overturnhead != None:
tempnext = overturnhead.next
overturnhead.next = pre
pre = overturnhead
overturnhead = tempnext
return pre
if __name__ == '__main__':
'''测试翻转的链表为空, 输出结果“链表为空”'''
head = create_list_link(0)
overturnhead = overturn_list_link(head)
traverse_list_link(overturnhead)
'''测试翻转链表只有一个数值, 输出结果:1'''
head = create_list_link(1)
overturnhead = overturn_list_link(head)
traverse_list_link(overturnhead)
'''测试翻转链表多个数值(取值10), 输出结果:1,2,3,....10'''
head = create_list_link(10)
overturnhead = overturn_list_link(head)
traverse_list_link(overturnhead)
'''测试翻转链表多个数值(取值100), 输出结果:1,2,3,....98,99,100'''
head = create_list_link(100)
overturnhead = overturn_list_link(head)
traverse_list_link(overturnhead)
链表其他操作
详细参考:数据结构–python实现链表结构
def create_table_link():
head = None
for count in range(1, 6):
head = CreateNode(count, head)
# 1、遍历链接
probe = head
# 输出节点内容,输出完后,单链表结构依然存在
while probe != None:
print(probe.data) # 输出:5, 4, 3, 2, 1
probe = probe.next
# 2、搜索链接
probe = head
targetItem = 3 # 搜索链表结构中是否存在数据项为3的节点
while probe != None and targetItem != probe.data:
probe = probe.next
if probe != None:
print("目标数据项targetItem已搜索到")
else:
print("目标数据项targetItem不存在于当前链表结构中")
# 输出节点内容,输出完后,单链表结构也销毁了
# 因为在输出节点内容时,直接使用的head,输出完成后,head值为None,故输出完成后表链接销毁
while head != None:
print(head.data) # 输出:5, 4, 3, 2, 1
head = head.next