'''
链表:是由一系列节点组成的元素集合。每个节点包含两部分,数据域item和指向下一个节点的指针next,通过节点之间的相互连接,最终串联成一个链表
'''
class Node(object):
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)
# 创建链表
'''
头插法(节省内存)
尾插法()
'''
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_linklist(lk):
while lk:
print(lk.item, end=',')
lk = lk.next
ln = create_linklist_head([1, 2, 3])
lk = create_linklist_tail([1, 2, 3])
print_linklist(ln)
print('\t')
print_linklist(lk)
print('<----------注意------------>')
# 尾插法
'''
链表在插入和删除的操作上明显快于顺序表
链表的内存可以更灵活的分配
试利用链表重新实现栈和队列
链表这种链式存储的数据结构对树和图的结构有很大的启发性
链表的插入
p.next = curNode.next
curNode.next = p
删除
p = curNode.next
curNode.next = curNode.next.next
del p
双链表
每个节点有两个指针,一个指向后一个节点,另一个节点指向前一个节点
创建双链表
插入:
p.next = curNode.next
curNode.next.prior = p
p.prior = cueNode
curNode.next = p
# prior指向前一个节点
# next指向下一个节点
删除:
p = curNode.next
curNode.next = p.next
p.next.prior = curNode
del p
'''
链表及其基本操作
最新推荐文章于 2024-07-04 15:16:11 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)