基于python数据结构与算法(三)——List

一 . 无序表:

1. List的操作:

python内置有List数据结构,不过是基于顺序存储实现的并进行了优化
在这里插入图片描述

在这里插入图片描述

不过我们可以用另一种方式优化python的List(实现pop带参数的操作是O(1))
为此,我们使用链表实现无序表。

在这里插入图片描述

无序表必须要有堆第一个节点的引用信息设置一个属性head,保存对第一个节点的引用 空表的head为None

class UnorderedList:

	def __init__(self):
		self.head = None
		

在这里插入图片描述

2. UnorderedList的实现:

这里的实现都比较简单,就直接上图了=_=
首先插入的最快捷方式的头插入O(1)
在这里插入图片描述
size : O(N)
在这里插入图片描述

search :
在这里插入图片描述

remove:

在这里插入图片描述

在这里插入图片描述
(这里若是不想分情况讨论可以增加哨兵节点 本文对此暂不讨论 但是Python对于是否是头节点的判断很方便!只需要判断previous是不是None即可)

在这里插入图片描述

二. 有序表:

1. 有序表的操作:

在这里插入图片描述
在这里插入图片描述
只要定义了__gt __方法的数据类型都可以比大小
在这里插入图片描述

2. 有序表的实现:

首先,他与无序表采用相同的链表实现方法,Node定义相同。对于isEmpty/size/remove这些方法与节点的次序无关,所以其实现与UnorderedList一样。只有search/add方法需要修改

class OrderedList:

	def __init__(self):
		self.head = None

利用有序性:多增加一个stop判断就可以修改了
在这里插入图片描述
search实现:
在这里插入图片描述

在这里插入图片描述
add方法实现 :
在这里插入图片描述

链表实现的算法分析:
在这里插入图片描述

三.线性结构小结:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值