链表:链表是由一系列节点组成的元素的集合。每个节点包含两部分,数据域item和指向下一个节点的指针next。通过节点之间的相互连接 ,最终串联成一个链表。
创建链表有两种方式:头插法、尾插法。
头插法:顾名思义就是从链表的头上插入结点,如图所示
当下一个结点“3”进来时,把“3”连上链表的头部“2”
此时此刻,“3”要成为新的头,头结点指向“3”
代码思路总结:
1. 指定头结点
2. 新元素的next指向头结点
3. 新元素成为头结点
尾插法:尾插法就是从链表的尾部插入结点,如图所示
当下一个结点“3”进来时,把“3”连上链表的尾部“2”
此时此刻,“3”要成为新的尾,尾结点指向“3”
代码思路总结:
1. 指定一个头结点、和一个尾结点
2. 链表中最后一个结点的next指向新元素
3. 新元素成为尾结点
整体代码如下:
# 初始化链表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_linklidt_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(li): while li: print(li.item, end=',') li = li.next print(end='n')li = create_linklist_head([1, 2, 3, 6, 8])print_linklist(li)lk = create_linklidt_tail([1, 2, 3, 6, 8])print_linklist(lk)
结果输出为:
8,6,3,2,1,1,2,3,6,8,
可看出,头插法是到这输出的,尾插法是顺序输出的


![[数据结构] python 单链表的创建 [数据结构] python 单链表的创建](http://www.mshxw.com/aiimages/31/268482.png)
