数据结构3(链表)

链表

可以解决存储数据时预先知道数量的问题,“手拉手的方式”每个存储单元都用一部分存储空间存储下一个数据的存储地址,因此每个数据不需要按照某个顺序申请存储位置。
所以链表也是线性表。
其中存储数据的空间被分成了两部分:前一部分叫数据区,用于存储数据,后部分叫链接区,用于存储下一个存储单元的地址。

每一串数据都需要第一个存储地址的头节点(首节点),以及最后一个链接区指向空的尾节点
在这里插入图片描述

python中变量交换的本质

a=10;
b=10
a,b=b,a
其中a=10的本质是建立一个a的存储空间,空间内存储指向存储10的地址信息。其他语言则是将数据直接存在a的存储空间内。
交换时,仅需将ab两个变量指向的地址交换位置即可。

自己构造函数时:
例如:
def add(self,item):在列表中添加数
其中self指的是接收函数本身,item指的是需要使用的另外的变量。
def travel(self):遍历列表中的数
遍历不需要新的变量,所以只有一个self接受本身的数值。

私有变量双下划线:self__head
列表数据的添加其实就是列表中数据的链接区的变化。

其中python中没有像其他语言中的指针定义,所以实现地址指向的操作可以利用单独的操作进行:
例如:pro.next=cur.next
又例如:self.__head=None
这些都是地址信息指向不同的位置

链表相对于顺序表,缺点是所需存储的空间变大(需多存储指向的地址信息),且数据查找时无法直接定位。
优点是存储数据时无需一块完整的存储区,可利用零散的空间存储数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值