第一部分:单链表
一.链表引入
顺序表的构建需要预先知道数据大小来申请连续的存储空间,使用起来不灵活。链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。
链表(Linked list)是一种常见的基础数据结构,是一种线性表,每个节点有数据区和链接区,链接区存放下一个节点的位置信息(即地址)。
二.单链表的定义及本质
1.定义:单链表是链表中最简单的一种形式,每个节点包含一个信息域(元素域)和一个链接域。元素域用来存放具体的数据,链接域用来存放下一个节点的位置(python中的标识),而最后一个节点的链接域则指向一个空值。变量p指向链表的头节点(首节点)的位置,从p出发能找到表中的任意节点。
2.python中变量标识的本质:例如a=10,变量标识a保存的不是数据本身,而是储存10的地址。
3.结点(node)、单链表及相关方法的代码实现:
class SingleNode(object):
'''单链表的结点定义'''
def __init__(self,item):
# item存放数据元素,next是下一结点的标识
self.item = item
self.next = None
class SingleLinkList(object):
'''单链表定义'''
def __init__(self,node=None):
# _开头标识私有属性
self._head = node
def is_empty(self):
# 判断链表是否为空
return self._head == None
def length(self):
# 链表长度,cur初始指向头结点
count = 0
cur = self._head
while cur!= None: