1> P57.链表介绍
链表是由一系列节点组成的元素集合。每个节点由两部分组成,数据域item和指向下一个节点的指针next。通过节点之间的相互连接,最终串联成了一个链表。
class Node:
def __init__(self,item):
self.item = item
self.next = None
a = Node(1)
b = Node(2)
c = Node(3)
a.next = b
b.next = c
print(a.next.next.item)
2> P58.创建链表
class Node:
def __init__(self,item):
self.item = item
self.next = None
def creat_linklist_head(li):
head = Node(li[0])
for element in li[1:]:
node = Node(element)
node.next = head
head = node
return head
def creat_linklist_tail(li):
head = Node(li[0])
head = tail
for element in li[1:]:
node = Node(element)
tail.next = node
tail = node
return head
2> P59.链表的插入与删除
**链表的插入与删除时间复杂度均为1**
- 插入
#插入
p.next = curNode.next
curNode.next = p
- 删除
#删除链表4
p = curNode.next
curNode.next = curNode.next.next
del p
2> P60.双链表
双链表的每个节点有两个指针:一个指向后一个节点,另一个指向前一个节点
- 双链表节点的插入
p.next = curNode.next
curNode.next.prior = p
p.prior = curNode
p = curNode.next
p = curNode.next
curNode.next = p.next
p.next.prior = curNode
del p
2> P61.链表-复杂度分析
- 链表在插入和删除的操作上明显快于顺序表
- 链表的内存可以更灵活的分配
- 链表这种链式存储的数据结构对数和图的结构有很大的启发性