链表
链表:链表是有一系列节点组成的元素集合。每个节点包含两部分,数据域item和指向下一个节点的指针next。通过节点之间的相互连接,最终串联成一个链表。
一、链表的实现
1、手动创建
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
2、通俗做法
- 头插法
- 尾插法
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_linklist(lk):
while lk:
print(lk.item,end=',')
lk=lk.next
lk=create_linklist_head([1,2,3])
#lk=create_linklist_tail([1,2,3])
print_linklist(lk)
二、链表节点的插入与删除
1、链表节点的插入
p.next=curNode.next
curNode.next=p
2、链表节点的删除
p=curNode.next
curNode.next=curNode.next.next
del p
三、双链表
双链表:双链表的每个节点有两个指针:一个指向后一个节点,另一个指向前一个节点。
class Node(object):
def __init__(self,item=None):
self.item=item
self.next=None
self.prior=None
1、双链表节点的插入
p.next=curNode.next
curNode.next.prior=p
p.prior=curNode
curNode.next=p
2、双链表节点的删除
p=curNode.next
curNode.next=p.next
p.next.prior=curNode
del p