第2章 顺序表及其运算.ppt
《第2章 顺序表及其运算.ppt》由会员分享,可在线阅读,更多相关《第2章 顺序表及其运算.ppt(111页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章第二章第二章第二章 线性表的顺序存储及其运算线性表的顺序存储及其运算线性表的顺序存储及其运算线性表的顺序存储及其运算 2.12.12.12.1 线性表的概念线性表的概念线性表的概念线性表的概念 一、线性表的结构特性一、线性表的结构特性 二、线性表的抽象数据类型二、线性表的抽象数据类型 2.22.22.22.2 顺序表及其运算顺序表及其运算顺序表及其运算顺序表及其运算 一、什么是顺序表一、什么是顺序表 二、顺序表的运算二、顺序表的运算 2.3 2.3 2.3 2.3 栈栈栈栈 一、栈的概念一、栈的概念 二、栈的抽象数据类型二、栈的抽象数据类型 三、顺序栈及其操作实现三、顺序栈及其操作实现
2、四、栈应用例四、栈应用例 第二章第二章第二章第二章 线性表的顺序存储及其运算线性表的顺序存储及其运算线性表的顺序存储及其运算线性表的顺序存储及其运算2.4 2.4 2.4 2.4 队列队列队列队列 一、队列及其抽象数据类型一、队列及其抽象数据类型 二、顺序队列及其操作实现二、顺序队列及其操作实现 三、队列应用例三、队列应用例 四、优先队列四、优先队列2.5 2.5 2.5 2.5 数组与矩阵的表示数组与矩阵的表示数组与矩阵的表示数组与矩阵的表示 一、数组的顺序分配一、数组的顺序分配 二、规则矩阵的压缩存储二、规则矩阵的压缩存储 三、稀疏矩阵的三元组顺序表表示三、稀疏矩阵的三元组顺序表表示2.1
3、 2.1 2.1 2.1 线性表的概念线性表的概念线性表的概念线性表的概念 一、线性表的结构特性一、线性表的结构特性一、线性表的结构特性一、线性表的结构特性 属性相同的数据元素按某种关系排列的表属性相同的数据元素按某种关系排列的表 例:例:农历节气表农历节气表 (立春立春,雨水雨水,惊蛰惊蛰,春分春分,清明清明,大雪大雪,冬至冬至,小寒小寒,大寒大寒)表中元素是字符表中元素是字符 抗灾衣被捐赠登记表抗灾衣被捐赠登记表 按捐赠时间先后按捐赠时间先后 (单位单位,姓名姓名,棉被棉被,棉衣裤棉衣裤,毛衣裤毛衣裤,帽类帽类 )奥运会奥运会各国家队奖牌数统计表各国家队奖牌数统计表 按金牌、银牌、铜牌数多
4、少按金牌、银牌、铜牌数多少 (国家国家,金牌数金牌数,银牌数银牌数,铜牌数铜牌数 )表中元素为记录表中元素为记录2.1 2.1 2.1 2.1 线性表的概念线性表的概念线性表的概念线性表的概念 线性表线性表线性表线性表(Linear List)Linear List)具有相同特性数据元素的有限序列;具有相同特性数据元素的有限序列;具有相同特性数据元素的有限序列;具有相同特性数据元素的有限序列;可描述为:可描述为:B=(D,R)D=ai|i=1,2,n ;R=(ai,ai+1)|i=1,2,n-1 ;也可以简单表示为:也可以简单表示为:B=(a1,a2,ai,an)表中元素个数表中元素个数 n
5、n 表长度表长度表长度表长度,n=0 时称为空表;时称为空表;结构特性:结构特性:结构特性:结构特性:元素之间具有线性关系元素之间具有线性关系 (元素在位置上有序元素在位置上有序);元素在表中的位置由其序号决定;元素在表中的位置由其序号决定;表长度可变;表长度可变;2.1 2.1 2.1 2.1 线性表的概念线性表的概念线性表的概念线性表的概念二、线性表的抽象数据类型二、线性表的抽象数据类型二、线性表的抽象数据类型二、线性表的抽象数据类型 数据部分:数据部分:数据部分:数据部分:数据元素,数据元素之间的关系描述;数据元素,数据元素之间的关系描述;操作部分:操作部分:操作部分:操作部分:根据应用
6、需要确定根据应用需要确定 按照功能可以归纳为以下基本类型:按照功能可以归纳为以下基本类型:属性设置:确定类型的基本属性值;属性设置:确定类型的基本属性值;读取属性:读取类型的属性值;读取属性:读取类型的属性值;插入:在对象的指定位置加入新的数据元素;插入:在对象的指定位置加入新的数据元素;删除:删除对象中的指定数据元素;删除:删除对象中的指定数据元素;查找:在对象查找满足条件的数据元素;查找:在对象查找满足条件的数据元素;遍历:按某种方式不重复地访问对象中所有数据元素;遍历:按某种方式不重复地访问对象中所有数据元素;关系访问:访问对象中有特定关系的元素;关系访问:访问对象中有特定关系的元素;2
7、.1 2.1 2.1 2.1 线性表的概念线性表的概念线性表的概念线性表的概念ADT LIST 数据:数据:数据:数据:线性表线性表 L=(a0,a1,an),n0;操作:操作:操作:操作:void InitList(*L);/初始化初始化 L指向的线性表指向的线性表 ElemType GetElemlist(*L,int pos);/得到表中第得到表中第pospos个元素个元素 int FindList(*L,ElemType item);/查找给定关键字元素查找给定关键字元素 /修改表中指定元素修改表中指定元素 int ModifyList(*L,ElemType item);2.1 2.
8、1 2.1 2.1 线性表的概念线性表的概念线性表的概念线性表的概念 int InsertList(*L,ElemType item);/向表中插入元素向表中插入元素 int DeleteList(*L,ElemType item);/删除表中元素删除表中元素 int LenthList(*L);/求表的长度求表的长度 void SortList(*L);/按关键字值对表元素排序按关键字值对表元素排序 void TraverseList(*L);/对表进行遍历并输出对表进行遍历并输出 void ClearList (*L);/清除表中所有元素清除表中所有元素 2.2 2.2 2.2 2.2 顺
9、序表及其运算顺序表及其运算顺序表及其运算顺序表及其运算 一、什么是顺序表一、什么是顺序表一、什么是顺序表一、什么是顺序表 顺序表顺序表顺序表顺序表线性表的顺序存储线性表的顺序存储线性表的顺序存储线性表的顺序存储(向量式存储向量式存储向量式存储向量式存储)存储方法存储方法:表中元素按逻辑顺序依次放在连续存储空间中表中元素按逻辑顺序依次放在连续存储空间中;每个元素所占存储单元长度相同;每个元素所占存储单元长度相同;例:例:利用数组实现线性表的顺序存储利用数组实现线性表的顺序存储,要求:要求:数组长度数组长度 表长度表长度 表中元素地址计算:表中元素地址计算:ADR(ai)=ADR(a1)+(i-1
10、)*k k为每个元素所占字节数;为每个元素所占字节数;a1 an-1 a2 a3 an :a41234:n 2.2 2.2 2.2 2.2 顺序表及其运算顺序表及其运算顺序表及其运算顺序表及其运算 二、二、顺序表的运算顺序表的运算顺序表的运算顺序表的运算 若对表示顺序表的数组空间采用动态分配,若对表示顺序表的数组空间采用动态分配,对顺序表结构作如下定义:对顺序表结构作如下定义:#define MaxSize 100 typedef struct ElemType listMaxSize ;/存储线性表的数组存储线性表的数组 int len;/线性表长度线性表长度 SeqList;数据结构操作的
11、实现与具体的存储结构有关数据结构操作的实现与具体的存储结构有关 以下考虑以以下考虑以SeqList为类型的顺序表基本操作为类型的顺序表基本操作(运算运算)的实现的实现 最基本的操作最基本的操作最基本的操作最基本的操作(运算运算运算运算):(1)(1)在表中插入一个元素在表中插入一个元素在表中插入一个元素在表中插入一个元素 (2)(2)删除表中某个元素删除表中某个元素删除表中某个元素删除表中某个元素 2.2 2.2 2.2 2.2 顺序表及其运算顺序表及其运算顺序表及其运算顺序表及其运算 1.1.1.1.顺序表初始化顺序表初始化顺序表初始化顺序表初始化 为存储线性表动态分配数组空间,置初始线性表
12、为空为存储线性表动态分配数组空间,置初始线性表为空 void InitList(SeqList*L )/动态分配存储空间动态分配存储空间 L-List=(ElemType*)malloc(MaxSize*sizeof(ElemType);if(!L-list)printf(Memory allocation failure!n);exit(1);L-len=0;/置初始线性表为空置初始线性表为空 2.2.2.2.顺序表的插入运算顺序表的插入运算顺序表的插入运算顺序表的插入运算 在表中第在表中第 i个位置插入一个元素个位置插入一个元素 item 设表长为设表长为 len 插入前:插入前:A=(a
13、0,a1,ai-1,ai,alen-1)表长为表长为 len 插入后:插入后:A=(a 0,a 1,a i-1,a a i i,a i+1,a len)表长为表长为 len+1 表首元素位置不变,表向后增长表首元素位置不变,表向后增长表首元素位置不变,表向后增长表首元素位置不变,表向后增长 ak 0 k i A与与A 的关系:的关系:a k=item k=i ak-1 i len=MaxSeze)/若表空间满,不能插入若表空间满,不能插入 printf(表满!n);exit(1);if(i L-len-1)i=L-len;for(j=L-len-1;j=i;j-)L-list j+1=L-li
14、st j;L-list i=item;L-len+;2.2 2.2 2.2 2.2 顺序表及其运算顺序表及其运算顺序表及其运算顺序表及其运算 算法分析:算法分析:算法分析:算法分析:时间复杂度:时间复杂度:时间复杂度:时间复杂度:决定本算法执行时间的主要操作:决定本算法执行时间的主要操作:数据元素移动次数;数据元素移动次数;数据元素移动次数;数据元素移动次数;设表长为设表长为n,表中第表中第i个位置插入,移动个位置插入,移动元素次数为:元素次数为:n i 设在各位置插入数据元素的概率为设在各位置插入数据元素的概率为Pi ,平均移动次为:平均移动次为:设各位置插入的概率相等,即:设各位置插入的概
15、率相等,即:Pi=1/(n+1),则有:则有:即:插入一元素的时间复杂度为:即:插入一元素的时间复杂度为:O(O(n n)空间复杂度:空间复杂度:空间复杂度:空间复杂度:原地工作原地工作原地工作原地工作(in place)思考:思考:思考:思考:在有序顺序表中插入一个数据元素,在有序顺序表中插入一个数据元素,在有序顺序表中插入一个数据元素,在有序顺序表中插入一个数据元素,算法?算法?算法?算法?2.2 2.2 2.2 2.2 顺序表及其运算顺序表及其运算顺序表及其运算顺序表及其运算 3.3.顺序表的删除运算顺序表的删除运算顺序表的删除运算顺序表的删除运算 在表中删除第在表中删除第pos个元素个
16、元素 删除前删除前:(b0,b1,b bi i ,b bi+1i+1,bn-1)表长为表长为 n;删除后删除后:(b0,b1,b bi-1i-1,b bi+1i+1,bn-2)表长为表长为 n-1;算法考虑:算法考虑:算法考虑:算法考虑:表空表空(L-len=0)不能做删除不能做删除 下溢处理下溢处理;指定的删除位置不存在,要处理;指定的删除位置不存在,要处理;正常删除操作,表长正常删除操作,表长 n 减减 1;算法描述:算法描述:算法描述:算法描述:参考教材参考教材 算法分析:算法分析:算法分析:算法分析:与插入运算类似;与插入运算类似;平均时间复杂度:平均时间复杂度:O(n);空间复杂度:
17、空间复杂度:原地工作原地工作 思考:思考:思考:思考:在有序顺序表中删除指定元素,在有序顺序表中删除指定元素,在有序顺序表中删除指定元素,在有序顺序表中删除指定元素,算法?算法?算法?算法?2.2 2.2 2.2 2.2 顺序表及其运算顺序表及其运算顺序表及其运算顺序表及其运算4.4.顺序表的查找顺序表的查找顺序表的查找顺序表的查找从线性表中查找具有给定值的第一个元素从线性表中查找具有给定值的第一个元素设设L为无序表,实现算法:为无序表,实现算法:int FindList(SeqList*L,ElemType item)int i;for(i=0;ilen;i+)if (L-list i=it
18、em)return i;return-1;/-1查找失败标志查找失败标志 思考:思考:思考:思考:若若若若 L L为有序表,实现算法?为有序表,实现算法?为有序表,实现算法?为有序表,实现算法?2.2 2.2 2.2 2.2 顺序表及其运算顺序表及其运算顺序表及其运算顺序表及其运算 算法复杂度:算法复杂度:算法复杂度:算法复杂度:时间复杂度:时间复杂度:算法运行时间主要由比较元素的次数决定,当查找算法运行时间主要由比较元素的次数决定,当查找 元素在表中第元素在表中第 i 个位置时,其比较次数为:个位置时,其比较次数为:i+1 设表长为设表长为 n,若表中各元素被查找的概率相等,元素值不等若表中
19、各元素被查找的概率相等,元素值不等,则查找一个元素的平均比较次数为:则查找一个元素的平均比较次数为:若没有查到所查元素若没有查到所查元素(查找失败查找失败)比较次数为比较次数为:n 即:即:其时间复杂度为其时间复杂度为:O(O(n n)空间复杂度:空间复杂度:原地工作原地工作原地工作原地工作(in place)in place)其他运算其他运算其他运算其他运算(操作操作操作操作)算法参考教材算法参考教材算法参考教材算法参考教材 2.2 2.2 2.2 2.2 顺序表及其运算顺序表及其运算顺序表及其运算顺序表及其运算 顺序表的主要优点顺序表的主要优点顺序表的主要优点顺序表的主要优点 :容易实现容
20、易实现;直观、易理解;直观、易理解;顺序表的限制:顺序表的限制:顺序表的限制:顺序表的限制:对存储对存储空间有要求;空间有要求;插入、删除操作的效率较低插入、删除操作的效率较低;2.3 2.3 2.3 2.3 栈栈栈栈 一、什么是栈一、什么是栈一、什么是栈一、什么是栈(Stack)Stack)问题问题问题问题1 1:要求正、逆过程保证严格的相反顺序要求正、逆过程保证严格的相反顺序 例:例:进入大沙漠考察与原路返回:进入大沙漠考察与原路返回:标志点标志点1标志点标志点1标志点标志点1标志点标志点2标志点标志点2标志点标志点3返返返返:返返返返1 1返返返返2 2返返返返3 3返返返返4 4标志点
21、标志点1标志点标志点1标志点标志点1标志点标志点1标志点标志点2标志点标志点2标志点标志点2标志点标志点3标志点标志点3标志点标志点4进进进进:过过过过4 4过过过过3 3过过过过2 2过过过过1 12.3 2.3 2.3 2.3 栈栈栈栈 问题问题问题问题2 2 2 2:多级中断的进入与返回多级中断的进入与返回 假设某系统执行时遇有假设某系统执行时遇有4级中断,其保护各级中断现场与恢复级中断,其保护各级中断现场与恢复 现场的过程为:现场的过程为:(打印机打印机)(磁盘磁盘)(采集卡采集卡)(电源电源)1级中断级中断 2级中断级中断 3级中断级中断 4级中断级中断 保存现场保存现场1 保存现场
22、保存现场2 保存现场保存现场3 a:b:c:end return return return 2.3 2.3 2.3 2.3 栈栈栈栈 为保证中断正确执行,须依次记住每层中断的现场及返回地址;为保证中断正确执行,须依次记住每层中断的现场及返回地址;进入中断进入中断进入中断进入中断 当各层中断当各层中断“返回返回”时,则要按记入的相反次序逐个恢复现场继时,则要按记入的相反次序逐个恢复现场继续执行;续执行;中断返回中断返回中断返回中断返回 现场现场1现场现场1现场现场2现场现场3现场现场2现场现场1现场现场1现场现场1现场现场22.3 2.3 2.3 2.3 栈栈栈栈 从从上述表的特点看上述表的特
23、点看栈的结构特性栈的结构特性:表中元素有序表中元素有序线性表线性表 元素进入与退出顺序相反元素进入与退出顺序相反特殊性特殊性 栈栈栈栈限制插入、删除操作只能在一端进行的特殊线性表限制插入、删除操作只能在一端进行的特殊线性表限制插入、删除操作只能在一端进行的特殊线性表限制插入、删除操作只能在一端进行的特殊线性表 表中允许进行插入、删除操作的一端表中允许进行插入、删除操作的一端栈顶,栈顶,另一端另一端栈底;栈底;如:如:(a1,a2,a3,a4,an-1)栈底栈底 栈顶栈顶 栈结构特性:栈结构特性:栈结构特性:栈结构特性:栈中元素后进先出栈中元素后进先出(LIFO)结论:结论:可用于记忆正、逆顺序
24、;可用于记忆正、逆顺序;2.3 2.3 2.3 2.3 栈栈栈栈 二、栈的抽象数据类型二、栈的抽象数据类型二、栈的抽象数据类型二、栈的抽象数据类型 ADT Stack 数据:数据:数据:数据:栈栈S 以以Stack 为存储类型;为存储类型;操作:操作:操作:操作:void Initstack(*s);/初始化初始化S指向的栈指向的栈 void Push(*s,ElemType item);/元素进栈元素进栈 ElemType Pop(*s);/元素退栈元素退栈 ElemType GetTop(*s);/读取栈顶元素值读取栈顶元素值 int Emptype Stack(*s);/判断栈是否空判断
25、栈是否空 int FullStack(*s);/判断栈是否满判断栈是否满 void ClearStack(*s);/清空栈清空栈 2.3 2.3 2.3 2.3 栈栈栈栈 三、顺序栈三、顺序栈三、顺序栈三、顺序栈 栈的顺序存储栈的顺序存储顺序栈顺序栈 最先入栈的元素最先入栈的元素最先入栈的元素最先入栈的元素栈底栈底栈底栈底 最后入栈的元素最后入栈的元素最后入栈的元素最后入栈的元素栈顶栈顶栈顶栈顶 假定:以数组假定:以数组 stack MaxSize 存储栈,存储栈,数组空间采用动态分配;数组空间采用动态分配;用用 top 指示栈顶位置,指示栈顶位置,定义定义顺序栈顺序栈 SeqStack 的结
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 顺序表及其运算 顺序 及其 运算
限制150内