链表
线性表:链表和顺序表的统称,一个线性表是某类元素的一个集合,还记录这元素之间的一种顺序关系。最基本的数据结构之一。
为什么要使用链表
链表可以充分利用计算机内存空间,实现灵活的内存动态管理。
链表的定义
链表是一种常见的基础数据结构,是一种线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。
链表的节点
一个节点由两部分组成,数据区和链接区。第一部分保存数据信息,第二部分保存下一个节点的数据信息地址。
单向链表
定义:
单链表是链表中最简单的一种形式,它的节点包含两个域,一个信息域和一个链接域。这个链接指向链表中的下一个节点。而最后一个节点的链接域则指向一个空值。
-
表元素域用来存放具体数据
-
链接域用来存放下一个节点的位置
-
变量p指向链表的头节点的位置,从p出发能找到表中的任意节点。
Python中变量标识的本质
python中的变量名不保存值,保存值的地址。
变量等于谁即相当于该变量指向那个节点
单链表在python中的操作使用
链表与节点类的连接
统计一个链表的长度:游标指针
class Node(object):
def __init__(self,item):
self.item=item
self.next=None
#node=Node()
class SingleLinkList(object):
#单链表
def __init__(self,node=None):
#定义第一个指向的节点位置,头节点位置的属性为对象属性
self.__head=node
def is_empty(self):
#链表是否为空
return self.__head == None
def length(self):
#返回链表的长度
# 遍历整个链表
# cur游标用来移动遍历节点
cur = self.__head
# count记录数量
count = 0
while cur != None:
count += 1
cur = cur.next
return count
def travel(self):
cur=self.__head
while cur != None:
print(cur.item,end=" ")
cur=cur.next
print("\n")
def add(self,item):
#链表头部添加元素,头插法,先将新节点的next与原链表头部的数据地址连接,再将
#head与新节点