链表
链表基础
链表中每一个元素都是一个对象,每个对象称为一个节点,包含有数据域key和指向下一个节点的指针next。通过各个节点之间的相互连接,最终串联成一个链表。
class Node:
'''
节点定义
'''
def __init__(self, item):
self.item = item
self.next = None
def traversal(head):
'''
遍历链表
:param head:
:return:
'''
curNode = head
while curNode is not None:
print(curNode.item)
curNode = curNode.next
# 创建节点
n1 = Node(1)
n2 = Node(3)
n3 = Node(2)
# 连接链表
n1.next = n2
n2.next = n3
traversal(n1) # 1 3 2
print('-----')
# 插入节点
p = Node(5)
p.next = n2
n1.next = p
traversal(n1) # 1 5 3 2
print('-----')
# 删除节点
d = n1.next
n1.next = n1.next.next
del d
traversal(n1)
print('-----')
# ============================
# 头插法:列表中的元素按照头插法,插成一个链表
def createLinkListF(li):
l = Node('head') # 链表头
for i in li:
s = Node(i)
s.next = l.next
l.next = s
return l
linkl = createLinkListF([7, 8, 9])
traversal(linkl) # head 9 8 7
print('-----')
# ============================
# 尾插法创建链表:
# 列表中的元素按照尾插法,插成一个链表
def createLinkListR(li):
l = Node('head') # 链表头
r = l
for i in li:
s = Node(i)
r.next = s
r = s
return l
linkr = createLinkListR([1, 2, 3])
traversal(linkr) # head 1 2 3