3.4无序表抽象数据类型及Python实现-(pythoon进阶-数据结构与算法)课件

2023-12-13
| 22页
| 78人阅读
| 0人下载
特供

内容正文:

无序表抽象数据类型及Python实现 数据结构与算法(Python版) ❖ 在前面基本数据结构的讨论中 , 我们采用 Python List来实现了多种线性数据结构 ❖ 列表List是一种简单强大的数据集结构, 提供了丰富的操作接口 但并不是所有的编程语言都提供了List数据类型 ,有时候需要程序员自己实现。 数据结构与算法(Python版) 列表List:什么是列表? 00 ❖ 一种数据项按照相对位置存放的数据集 特别的,被称为“无序表unordered list ” 其中数据项只按照存放位置来索引,如第1个、 第2个…… 、最后一个等。 (为了简单起见,假设表中不存在重复数据项) ❖ 如一个考试分数的集合“ 54, 26, 93, 17, 77和31” ❖ 如果用无序表来表示 , 就是[54, 26, 93, 17, 77, 31] 数据结构与算法(Python版) 列表List:什么是列表? 00 ❖ 无序表List的操作如下: List():创建一个空列表 add(item):添加一个数据项到列表中,假设 item原先不存在于列表中 remove(item):从列表中移除item,列表被修 改, item原先应存在于表中 search(item):在列表中查找item,返回布尔 类型值 isEmpty():返回列表是否为空 size():返回列表包含了多少数据项 数据结构与算法(Python版) 抽象数据类型:无序表List 00 ❖ 无序表List的操作如下: append(item):添加一个数据项到表末尾,假 设item原先不存在于列表中 index(item):返回数据项在表中的位置 insert(pos, item):将数据项插入到位置pos ,假设item原先不存在与列表中,同时原列表具 有足够多个数据项,能让item占据位置pos pop():从列表末尾移除数据项,假设原列表至 少有1个数据项 pop(pos):移除位置为pos的数据项,假设原列 表存在位置pos 数据结构与算法(Python版) 抽象数据类型:无序表List 00 ❖ 为了实现无序表数据结构 , 可以采用链接 表的方案。 ❖ 虽然列表数据结构要求保持数据项的前后 相对位置 , 但这种前后位置的保持 , 并不 要求数据项依次存放在连续的存储空间 数据结构与算法(Python版) 采用链表实现无序表 00 ❖ 如下图 , 数据项存放位置并没有规则 , 但 如果在数据项之间建立链接指向 , 就可以 保持其前后相对位置 第一个和最后一个数据项需要显式标记出来, 一 个是队首, 一个是队尾,后面再无数据了。 数据结构与算法(Python版) 采用链表实现无序表 00 ❖ 链表实现的最基本元素是节点Node 每个节点至少要包含2个信息: 数据项本身,以 及指向下一个节点的引用信息 注意next为None的意义是没有下一个节点了, 这个很重要 数据结构与算法(Python版) 链表实现:节点Node 00 数据结构与算法(Python版) 链表实现:节点Node 00 ❖ 可以采用链接节点的方式构建数据集来实 现无序表 ❖ 链表的第一个和最后一个节点最重要 如果想访问到链表中的所有节点,就必须从第一 个节点开始沿着链接遍历下去 链表实现:无序表UnorderedList 数据结构与算法(Python版) 00 ❖ 所以无序表必须要有对第一个节点的引用 信息 设立一个属性head,保存对第一个节点的引用 空表的head为None 链表实现:无序表UnorderedList 数据结构与算法(Python版) 00 ❖ 随着数据项的加入 , 无序表的head始终 指向链条中的第一个节点 注意!无序表mylist对象本身并不包含数据项 (数据项在节点中) 其中包含的head只是对首个节点Node的引用 判断空表的isEmpty()很容易实现 • return self.head == None 链表实现:无序表UnorderedList 数据结构与算法(Python版) 00 ❖ 接下来 , 考虑如何实现向无序表中添加数 据项 , 实现add方法。 ❖ 由于无序表并没有限定数据项之间的顺序 ❖ 新数据项可以加入到原表的任何位置 ❖ 按照实现的性能考虑 , 应添加到最容易加 入的位置上。 链表实现:无序表UnorderedList 数据结构与算法(Python版) 00 ❖ 由链表结构我们知道 ❖ 要访问到整条链上的所有数据项 ❖ 都必须从表头head开始沿着next链接逐 个向后查找 ❖ 所以添加新数据项最快捷的位置是表头, 整个链表的首位置。 链表实现:无序表UnorderedList 数据结构与算法(Python版) 00 ❖ a

资源预览图

3.4无序表抽象数据类型及Python实现-(pythoon进阶-数据结构与算法)课件
1
3.4无序表抽象数据类型及Python实现-(pythoon进阶-数据结构与算法)课件
2
3.4无序表抽象数据类型及Python实现-(pythoon进阶-数据结构与算法)课件
3
3.4无序表抽象数据类型及Python实现-(pythoon进阶-数据结构与算法)课件
4
3.4无序表抽象数据类型及Python实现-(pythoon进阶-数据结构与算法)课件
5
3.4无序表抽象数据类型及Python实现-(pythoon进阶-数据结构与算法)课件
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。