1、链表(Linked list)
链表是一种常见的基础数据结构,是一种线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。
链表是通过每个结点的指针与将线性表的n个节点按期逻辑次序连接在一起的。
2.单向链表
单向链表每一个节点包含两个域,一个信息域(元素域)和一个连接域。这个连接指向链表中的下一个节点,而最后一个节点的连接域则指向一个空值
如上图:
- 表元素域elem用来存放具体的数据
- 连接域next用来存放下一个节点的位置(python中的标识)
- 变量p指向链表的头节点(首节点)的位置,从p出发能找到表中的任意节点。
节点用程序实现:
class SingleNode(object):
#单向链表的节点
def __init__(self,item):
#item 存放数据元素
self.item=item
#next是下一个节点的标识
self.next=None
单向链表的操作
- is_empty()链表是否为空
- length链表长度
- travel 遍历整个链表
- add(item)链表头部添加元素
- append(item)链表尾部添加元素
- insert(pos,item)链表指定位置添加元素
- remove(item)删除节点
- search(item)查找节点是否存在
用来程序实现:
class SingleLinkList(object):
#单向列表
def __init__(self):
self.head=None
判断链表是否为空
def is_empty(self):
return self.head==None
链表长度
def length(self):
cur=self.head#ucr初始时指向头节点
count=0
while cur!=None:
count+=1
cur=cur.next#将cur后移一个节点
return count
遍历整个链表
def travel(self):
cur=self.head
while cur !=