C++数据结构(第2版)课件第2章 线性表.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C++数据结构(第2版)课件第2章 线性表.ppt》由会员分享,可在线阅读,更多相关《C++数据结构(第2版)课件第2章 线性表.ppt(101页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+数据结构(第2版)课件第2章线性表数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社2.1 2.1 线性表的逻辑结构线性表的逻辑结构线性表的逻辑结构线性表的逻辑结构数据元素之间的关系是什么?数据元素之间的关系是什么?数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社线性表的抽象数据类型定义线性表的抽象数据类型定义ADT ListData 线性表
2、中的数据元素具有相同类型,线性表中的数据元素具有相同类型,相邻元素具有前驱和后继关系相邻元素具有前驱和后继关系OperationInitList 前置条件前置条件:表不存在:表不存在 输入输入:无:无 功能功能:表的初始化:表的初始化 输出输出:无无 后置条件后置条件:建一个空表:建一个空表2.1 2.1 线性表的逻辑结构线性表的逻辑结构线性表的逻辑结构线性表的逻辑结构数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社DestroyList 前置条件前置条件:表已存在:表已存在 输入输入:无:无 功能功能:销毁表:销毁表 输出输出:无:无 后置条件后置条件:释放表所占用的存
3、储空间:释放表所占用的存储空间Length 前置条件前置条件:表已存在:表已存在 输入输入:无:无 功能功能:求表的长度:求表的长度 输出输出:表中数据元素的个数:表中数据元素的个数 后置条件后置条件:表不变:表不变2.1 2.1 线性表的逻辑结构线性表的逻辑结构线性表的逻辑结构线性表的逻辑结构线性表的抽象数据类型定义线性表的抽象数据类型定义数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社Get 前置条件前置条件:表已存在:表已存在 输入输入:元素的序号:元素的序号i 功能功能:在表中取序号为:在表中取序号为i的数据元素的数据元素 输出输出:若:若i合法,返回序号为合法,
4、返回序号为i的元素值,否则抛出异常的元素值,否则抛出异常 后置条件后置条件:表不变:表不变Locate 前置条件前置条件:表已存在:表已存在 输入输入:数据元素:数据元素x 功能功能:在线性表中查找值等于:在线性表中查找值等于x的元素的元素 输出输出:若查找成功,返回:若查找成功,返回x在表中的序号,否则返回在表中的序号,否则返回0 后置条件后置条件:表不变:表不变2.1 2.1 线性表的逻辑结构线性表的逻辑结构线性表的逻辑结构线性表的逻辑结构线性表的抽象数据类型定义线性表的抽象数据类型定义数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社Insert前置条件前置条件:表已
5、存在:表已存在输入输入:插入:插入i;待插待插x功能功能:在表的第:在表的第i个位置处插入一个新元素个位置处插入一个新元素x输出输出:若插入不成功,抛出异常:若插入不成功,抛出异常 后置条件后置条件:若插入成功,表中增加一个新元素:若插入成功,表中增加一个新元素Delete前置条件前置条件:表已存在:表已存在输入输入:删除位置:删除位置i功能功能:删除表中的第:删除表中的第i个元素个元素 输出输出:若删除成功,返回被删元素,否则抛出异常:若删除成功,返回被删元素,否则抛出异常 后置条件后置条件:若删除成功,表中减少一个元素:若删除成功,表中减少一个元素2.1 2.1 线性表的逻辑结构线性表的逻
6、辑结构线性表的逻辑结构线性表的逻辑结构线性表的抽象数据类型定义线性表的抽象数据类型定义数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社Empty 前置条件前置条件:表已存在:表已存在 输入输入:无:无 功能功能:判断表是否为空:判断表是否为空 输出输出:若是空表,返回:若是空表,返回1,否则返回,否则返回0 后置条件后置条件:表不变:表不变ADT进一步说明进一步说明:(1 1)线性表的基本操作根据实际应用是而定;)线性表的基本操作根据实际应用是而定;(2)复杂的操作可以通过基本操作的组合来实现;)复杂的操作可以通过基本操作的组合来实现;(3)对不同的应用,操作的接口可能不
7、同。对不同的应用,操作的接口可能不同。2.1 2.1 线性表的逻辑结构线性表的逻辑结构线性表的逻辑结构线性表的逻辑结构线性表的抽象数据类型定义线性表的抽象数据类型定义数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现顺序表顺序表线性表的顺序存储结构线性表的顺序存储结构例:例:(34,23,67,43)34236743 4存储要点存储要点用一段地址用一段地址连续连续的存储单元的存储单元依次依次存储线性表中的数据元素存储线性表中的数据元素数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社2.2 线性
8、表的顺序存储结构及实现线性表的顺序存储结构及实现顺序表顺序表线性表的顺序存储结构线性表的顺序存储结构例:例:(34,23,67,43)34236743存储空间的起始位置存储空间的起始位置 4用什么属性来描述顺序表?用什么属性来描述顺序表?顺序表的容量(最大长度)顺序表的容量(最大长度)顺序表的当前长度顺序表的当前长度数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现顺序表顺序表线性表的顺序存储结构线性表的顺序存储结构例:例:(34,23,67,43)34236743 4如何实现顺序表的内存分配?如何实现顺序表的内存
9、分配?顺序表顺序表一维数组一维数组数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社 0 i-2 i-1 n-1 Max-1 a1 ai-1 ai an 空闲空闲 长度长度2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现顺序表顺序表一般情况下,一般情况下,(a1,a2,,ai-1,ai,an)的顺序存储:的顺序存储:数组的长度数组的长度Max线性表的长度线性表的长度Length数组的长度大于等于当前线性表的长度数组的长度大于等于当前线性表的长度 数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社如何求得任意元素的存储地址?如何求得任意元素的存
10、储地址?0 i-2 i-1 n-1 Max-1 a1 ai-1 ai an 空闲空闲 长度长度2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现顺序表顺序表一般情况下,一般情况下,(a1,a2,,ai-1,ai,an)的顺序存储:的顺序存储:cLoc(ai)Loc(a1)数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社 0 i-2 i-1 n-1 Max-1 a1 ai-1 ai an 空闲空闲 长度长度Loc(ai)=Loc(a1)+(i-1)c随机存取随机存取:在在O(1)时间内存取数据元素时间内存取数据元素2.2 线性表的顺序存储结构及实现线性表的顺序存储
11、结构及实现顺序表顺序表一般情况下,一般情况下,(a1,a2,,ai-1,ai,an)的顺序存储:的顺序存储:cLoc(ai)Loc(a1)数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现存储结构是数据及其逻辑结构在计算机中的表示;存储结构是数据及其逻辑结构在计算机中的表示;存取结构是在一个数据结构上对查找操作的时间性存取结构是在一个数据结构上对查找操作的时间性能的一种描述。能的一种描述。存储结构和存取结构存储结构和存取结构 “顺序表是一种顺序表是一种随机存取随机存取的的存储存储结构结构”的含义为:的含义为:在顺序
12、表这种存储结构上进行的查找操作,其时间在顺序表这种存储结构上进行的查找操作,其时间性能为性能为O(1)。数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社 顺顺序序表表类类的的声声明明const int MaxSize=100;template /模板类模板类class SeqList public:SeqList();/构造函数构造函数 SeqList(DataType a,int n);SeqList();/析构函数析构函数 int Length();DataType Get(int i);int Locate(DataType x);void Insert(int i
13、,DataType x);DataType Delete(int i);private:DataType dataMaxSize;int length;2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社操作接口:操作接口:SeqList()()算法描述:算法描述:SeqList:SeqList()length=0;2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现顺序表的实现顺序表的实现无参构造函数无参构造函数 datalength0数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社操
14、作接口:操作接口:SeqList(DataType a,int n)顺序表的实现顺序表的实现有参构造函数有参构造函数2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现顺序表顺序表 数组数组a351224334253512243342数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社template SeqList:SeqList(DataType a,int n)if(n MaxSize)throw 参数非法参数非法;for(i=0;i=MaxSize合理的插入位置:合理的插入位置:1ilength+1(i指的是元素的序号)指的是元素的序号)2.2 线性表的顺序存
15、储结构及实现线性表的顺序存储结构及实现顺序表的实现顺序表的实现插入插入 435122442a1a2a3a40 1 2 3 4422412335什么时候不能插入什么时候不能插入?注意边界条件注意边界条件数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社1.如果表满了,则抛出如果表满了,则抛出上溢上溢异常异常;2.如果元素的插入位置不合理,则抛出如果元素的插入位置不合理,则抛出位置位置异常异常;3.将最后一个元素至第将最后一个元素至第i个元素分别向后移动一个位置;个元素分别向后移动一个位置;4.将元素将元素x填入位置填入位置i处;处;5.表长加表长加1;算法描述算法描述伪代码伪
16、代码2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现顺序表的实现顺序表的实现插入插入数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社template void SeqList:Insert(int i,DataType x)if(length=MaxSize)throw 上溢上溢;if(i length+1)throw 位置位置;for(j=length;j=i;j-)-)dataj=dataj-1;datai-1=x;length+;算法描述算法描述C+描述描述2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现顺序表的实现顺序表的实现插入插入基本语
17、句基本语句?数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社最好最好情况(情况(i=n+1):):基本语句执行基本语句执行0次,时间复杂度为次,时间复杂度为O(1)。最坏最坏情况(情况(i=1):):基本语句执行基本语句执行n+1次,时间复杂度为次,时间复杂度为O(n)。平均平均情况(情况(1in+1):):时间复杂度为时间复杂度为O(n)。时间性能分析时间性能分析2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现顺序表的实现顺序表的实现插入插入+-+=11)=1(niiinp+-+=11)=1(11niinn2n=O(n)数据结构(数据结构(C+版)第版)第2
18、版版清华大学出版社清华大学出版社操作接口:操作接口:DataType Delete(int i)删除前:删除前:(a1,ai-1,ai,ai+1,an)删除后:删除后:(a1,ai-1,ai+1,an)顺序表的实现顺序表的实现删删 除除2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现ai-1和和ai之间的逻辑关系发生了变化之间的逻辑关系发生了变化顺序存储要求存储位置反映逻辑关系顺序存储要求存储位置反映逻辑关系存储位置要反映这个变化存储位置要反映这个变化数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社例:(例:(35,33,12,24,42),),删除删除i=2
19、的数据元素。的数据元素。仿照顺序表的插入操作,完成:仿照顺序表的插入操作,完成:1.分析边界条件;分析边界条件;2.分别给出伪代码和分别给出伪代码和C+描述的算法;描述的算法;3.分析时间复杂度。分析时间复杂度。2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现顺序表的实现顺序表的实现删删 除除 535a1a2a3a40 1 2 3 4422412334a5122442数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社顺序表的实现顺序表的实现按位查找按位查找操作接口:操作接口:DataType Get(int i)2.2 线性表的顺序存储结构及实现线性表的顺序存储
20、结构及实现 0 i-2 i-1 n-1 Max-1 a1 ai-1 ai an 空闲空闲 n算法描述:算法描述:template DataType SeqList:Get(int i)if(i=1&i=length)return i-1;时间复杂度时间复杂度?数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社顺序表的实现顺序表的实现按值查找按值查找操作接口:操作接口:int Locate(DataType x)2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现 535a1a2a3a40 1 2 3 442241233a5例:在(例:在(35,33,12,24,42
21、)中查找值为中查找值为12的元素,的元素,返回在表中的序号。返回在表中的序号。iii注意序号和下标之间的关系注意序号和下标之间的关系数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社template int SeqList:Locate(DataType x)for(i=0;i length;i+)if(datai=x)return i+1;return 0;2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现顺序表的实现顺序表的实现按值查找按值查找算法描述:算法描述:时间复杂度时间复杂度?数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社顺序表
22、的优缺点顺序表的优缺点 顺序表的优点:顺序表的优点:无需为表示表中元素之间的逻辑关系而增加额外的无需为表示表中元素之间的逻辑关系而增加额外的存储空间;存储空间;随机存取:可以快速地存取表中任一位置的元素。随机存取:可以快速地存取表中任一位置的元素。顺序表的缺点:顺序表的缺点:插入和删除操作需要移动大量元素;插入和删除操作需要移动大量元素;表的容量难以确定,表的容量难以扩充;表的容量难以确定,表的容量难以扩充;造成存储空间的造成存储空间的碎片碎片。2.2 线性表的顺序存储结构及实现线性表的顺序存储结构及实现数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社单链表:单链表:线性
23、表的链接存储结构。线性表的链接存储结构。存储思想:存储思想:用一组用一组任意任意的存储单元存放线性表的元素。的存储单元存放线性表的元素。2.3 线性表的链接存储结构及实现线性表的链接存储结构及实现单链表单链表静态存储分配静态存储分配 顺序表顺序表事先确定容量事先确定容量 链链 表表动态存储分配动态存储分配 运行时分配空间运行时分配空间 连续连续不连续不连续零散分布零散分布数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社0200020803000325存储特点:存储特点:1.逻辑次序和物理次序逻辑次序和物理次序 不一定相同。不一定相同。2.元素之间的逻辑关系元素之间的逻辑关
24、系 用指针表示。用指针表示。2.3 线性表的链接存储结构及实现线性表的链接存储结构及实现例:例:(a1,a2,a3,a4)的存储示意图的存储示意图单链表单链表 a10200 a20325 a30300 a4 数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社2.3 线性表的链接存储结构及实现线性表的链接存储结构及实现单链表单链表0200020803000325 a10200 a20325 a30300 a4 结点结点数据域数据域指针域指针域单链表是由若干结点构成的;单链表是由若干结点构成的;单链表的结点只有一个指针域。单链表的结点只有一个指针域。data:存储数据元素存储数
25、据元素next:存储指向后继结点的地址存储指向后继结点的地址 data next单链表的结点结构:单链表的结点结构:数据域数据域指针域指针域数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社template struct Node DataType data;Node*next;2.3 线性表的链接存储结构及实现线性表的链接存储结构及实现单链表单链表 data next单链表的结点结构:单链表的结点结构:如何申请一个结点如何申请一个结点?数据结构(数据结构(C+版)第版)第2版版清华大学出版社清华大学出版社s=new Node;template struct Node Da
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+数据结构第2版课件第2章 线性表 C+ 数据结构 课件 线性
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内