链表:
一种节点组成的元素集合;
每个节点包含两部分:数据item
与指向下一个节点的指针next
;
通过节点之间的相互连接最终串联成一个链表;
头插法 与尾插法两种方式的代码
class Node:
def __init__(self,item):
self.item = item
self.next = None
# 头插法
def create_linklist_head(li):
head = Node(li[0])
for element in li[1:]:
node = Node(element)
node.next = head
head = node
return head
# 尾插法
def create_linklist_tail(li):
head = Node(li[0])
tail = head
for element in li[1:]:
node = Node(element)
tail.next = node
tail = node
return head
def print_likelist(lk):
while lk:
print(lk.item,end=' , ')
lk = lk.next
lk = create_linklist_head([1,2,3])
print_likelist(lk)
# 链表节点的插入
链表节点的删除
双链表
定义:每个节点有两个指针;
一个指向后一个节点,一个指向前一个节点。
双链表节点插入
双链表节点删除
链表与顺序表总结:
- 链表在插入和删除的操作上明显快于顺序表
- 链表的内存可以更灵活分配
-
- 试利用链表重新实现栈和队列
- 链表这种链式存储的数据结构对树和图的结构有很大的启发性
上述资料来自路飞学城,自己整理笔记,如果侵权,联系删除,谢谢;