中国科学技术大学:《数据结构》课程教学课件(PPT讲稿)第2章 线性表

第2章线性表2.1线性表的基本概念2.2线性表的顺序表示2.3线性表的链式表示2.4线性结构的深入中国科学技术大学ypb@ustc.edu.cn
ypb@ustc.edu.cn 1 中国科学技术大学 第2章 线性表 2.1 线性表的基本概念 2.2 线性表的顺序表示 2.3线性表的链式表示 2.4线性结构的深入

2.1线性表的基本概念·线性表的定义线性表是n(n>=0)个数据元素的有限序列,表中各个元素具有相同地属性,表中相邻元素间存在“序偶”关系。记做:(ai,a2......aj,a,ai+1....,an-1,an)ai-,称为a的直接前驱元素,aii是a;的直接后继元素线性表的长度:表中的元素个数n位序:称元素ai在线性表中的位序中国科学技术大学ypb@ustc.edu.cn
ypb@ustc.edu.cn 2 中国科学技术大学 2.1线性表的基本概念 • 线性表的定义 线性表是n(n>=0)个数据元素的有限序列,表中 各个元素具有相同地属性,表中相邻元素间存 在“序偶”关系。 记做:(a1 ,a2 ,.ai-1 ,ai ,ai+1 ,.,an-1 ,an ) ai-1称为ai 的直接前驱元素,ai+1是ai的直接后继 元素 线性表的长度:表中的元素个数 n 位序:i称元素ai在线性表中的位序

线性表的基本操作ADT List数据对象D=aaElemSet,i=1,2.....n,n0!数据结构:R={ai-1,a;eD,i-2,3,,n)基本操作:InitList(&L)Destroy(&L)ClearList(&L)ListEmpty(L)ListLength(L)GetElem(L,i,&e)1<=i<= ListLength (L)Locateltem(L,e)PriorElem(L,Cur e,&pre_e)NextElem(L,cur_e,&next_e)ListInsert(&L,i,e)1<=<= ListLength (L)+1ListDelete(&L,i,&e)1<=i<= ListLength (L)ListTraverse(L)End ADT List323中国科学技术大学ypb@ustc.edu.cn
ypb@ustc.edu.cn 3 中国科学技术大学 ADT List{ 数据对象:D={ ai |aiElemSet,i=1,2,.,n,n0} 数据结构:R={|ai-1 ,aiD,i=2,3,.,n} 基本操作: InitList(&L) Destroy(&L) ClearList(&L) ListEmpty(L) ListLength(L) GetElem(L,i,&e) 1<=i<= ListLength (L) LocateItem(L,e) PriorElem(L,Cur_e,&pre_e) NextElem(L,cur_e,&next_e) ListInsert(&L,i,e) 1<=i<= ListLength (L)+1 ListDelete(&L,i,&e) 1<=i<= ListLength (L) ListTraverse(L) }End ADT List 线性表的基本操作

【例】对两个线性表La、Lb表示的集合A和B,求一个新集合AAUB算法2.1Va)从Lb中取一个元素,并删除b)在La中查询c)若La中不存在,则将其插入La,重复直至Lb空【例】对两个线性表La、Lb表示的集合A和B,求A=A-B算法2.2a)从Lb中取一个元素,并删除b)在La中查询)若La中存在,则将从La删除,重复直至Lb空中国科学技术大学ypb@ustc.edu.cn
ypb@ustc.edu.cn 4 中国科学技术大学 【例】对两个线性表La、Lb表示的集合A和B,求一个 新集合A=AUB 算法2.1 a) 从Lb中取一个元素,并删除 b) 在La中查询 c) 若La中不存在,则将其插入La,重复直至Lb空 【例】对两个线性表La、Lb表示的集合A和B ,求 A=A-B 算法2.2 a) 从Lb中取一个元素,并删除 b) 在La中查询 c) 若La中存在,则将从La删除,重复直至Lb空

2.2线性表的顺序表示顺序表线性表的顺序存储表示(C++规范)Const LIST INIT SIZE=100:Const LISTINCREMENT=10:(C规范)#define LIST INIT SIZE 100typedef struct {* elem,Elemtypeintlength;intlistsize;intincrementsize;fSqList;O5中国科学技术大学ypb@ustc.edu.cn
ypb@ustc.edu.cn 5 中国科学技术大学 2.2线性表的顺序表示 • 顺序表——线性表的顺序存储表示 Const LIST_INIT_SIZE=100; (C++规范) Const LISTINCREMENT=10; #define LIST_INIT_SIZE 100 (C规范) typedef struct { Elemtype * elem; int length; int listsize; int incrementsize; }SqList;

顺序表中基本操作的实现算法2.3初始化操作InitListSq算法2.4销毁操作DestroyList Sq算法2.5√是否为空ListEmpy_Sq算法2.6是否满ListFull_Sq算法2.7求长度 ListLength_sq算法2.8查找元素操作LocateElemSq算法2.9获取元素操作GetItemSq插入元素操作ListInsertSg算法2.10时间复杂度0(n)删除元素操作ListDeleteSq算法2.11时间复杂度O(n)插入和删除操作的时间分析:Ein=Zpi(n-i+1)=n/2Edl=Zqi(n-i)=(n-1)/26中国科学技术大学ypb@ustc.edu.cn
ypb@ustc.edu.cn 6 中国科学技术大学 • 顺序表中基本操作的实现 初始化操作 InitList_Sq 算法2.3 销毁操作 DestroyList_Sq 算法2.4 是否为空 ListEmpy_Sq 算法2.5 是否满 ListFull_Sq 算法2.6 求长度 ListLength_sq 算法2.7 查找元素操作 LocateElem_Sq 算法2.8 获取元素操作 GetItem_Sq 算法2.9 插入元素操作 ListInsert_Sq 算法2.10 时间复杂度O(n) 删除元素操作 ListDelete_Sq 算法2.11时间复杂度O(n) • 插入和删除操作的时间分析: Ein=Σpi(n-i+1)=n/2 Edl=Σqi(n-i)=(n-1)/2

查找元素操作算法2.8时间复杂度O(m)例如:顺序表LlistsizeL.elem237541385462117pL.length = 7838e==4返回值50e=返回值=0中国科学技术大学ypb@ustc.edu.cn
ypb@ustc.edu.cn 7 中国科学技术大学 查找元素操作 算法2.8 时间复杂度O(n) 例如:顺序表 23 75 41 38 54 62 17 L.elem L.length = 7 L.listsize e = 38 p p p p p i 12348 e = 50 p 返回值 = 4 返回值 = 0

算法2.10时间复杂度0(n)插入元素操作(ai,.., a, ai,.., an)改变为(ai, ..., a, e, a, .., an), aiaiazai-1aiaea,aza;-1表的长度增加8中国科学技术大学ypb@ustc.edu.cn
ypb@ustc.edu.cn 8 中国科学技术大学 (a1 , ., ai-1 , ai , ., an ) 改变为 a1 a2 . ai-1 ai . an a1 a2 . ai-1 e ai . an , 表的长度增加 (a1 , ., ai-1 , e, ai , ., an ) 插入元素操作 算法2.10 时间复杂度O(n)

删除元素操作算法2.12时间复杂度0(n)(aj, .., ai-1, ai, ai1, .., an)改变为(a, .., ai1, ai1, ..., an), <a;-1a:aaiaza.ai-1ailna2ai-1a;+1a.1表的长度减少309中国科学技术大学ypb@ustc.edu.cn
ypb@ustc.edu.cn 9 中国科学技术大学 删除元素操作 算法2.12 时间复杂度O(n) (a1 , ., ai-1 , ai , ai+1, ., an ) 改变为 ai+1 . an , 表的长度减少 a1 a2 . ai-1 ai ai+1 . an a1 a2 . ai-1 (a1 , ., ai-1 , ai+1, ., an )

顺序表其它算法举例例2.6用顺序表表示集合,完成例2.4。算法2.13时间复杂度O(n2)例2.10用尽量少得辅助空间将前m个元素和后n个元素互换一算法2.25exchangel时间复杂度:O(mxn)一算法2.26invert 时间复杂度:O(t-s+1)-算法2.27exchange2时间复杂度:O(m+n)10中国科学技术大学ypb@ustc.edu.cn
ypb@ustc.edu.cn 10 中国科学技术大学 例2.6 用顺序表表示集合,完成例2.4。 算法2.13 时间复杂度O(n2 ) 例2.10 用尽量少得辅助空间将前m个元素和后n 个元素互换 – 算法2.25 exchange1 时间复杂度:O(m×n) – 算法2.26 invert 时间复杂度:O(t-s+1) – 算法2.27 exchange2 时间复杂度:O(m+n) 顺序表其它算法举例
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 中国科学技术大学:《数据结构及算法》课程教学课件(PPT讲稿)第1章 数据结构导论.pps
- 中国科学技术大学:《数据库基础》课程教学课件(PPT讲稿)第六章 数据库设计.pps
- 中国科学技术大学:《数据库基础》课程教学课件(PPT讲稿)第五章 数据库的保护.pps
- 中国科学技术大学:《数据库基础》课程教学课件(PPT讲稿)第四章 关系数据库设计理论.pps
- 中国科学技术大学:《数据库基础》课程教学课件(PPT讲稿)第三章 关系数据库标准查询语言SQL.pps
- 中国科学技术大学:《数据库基础》课程教学课件(PPT讲稿)第二章 关系数据库.pps
- 中国科学技术大学:《数据库基础》课程教学课件(PPT讲稿)第一章 绪论.pps
- 中国科学技术大学:《数据结构》课程教学课件(PPT讲稿)第4章 串和数组.pps
- 中国科学技术大学:《数据结构》课程教学课件(PPT讲稿)第1章 数据结构导论.pps
- 高职院校教研教改教学资源:《数据结构与算法》课程教学设计(教案)学生成绩管理系统的实现.pdf
- 高职院校教研教改教学资源:《移动应用开发技术》课程教学设计(教案)手机应用的形象.pdf
- 西安交通大学:《VLSI设计基础》课程教学课件(讲稿)SPICE电路仿真简介.pdf
- 西安交通大学:《VLSI设计基础》课程教学课件(讲稿)期末复习.pdf
- 西安交通大学:《VLSI设计基础》课程教学课件(讲稿)Hspice的使用.pdf
- 西安交通大学:《VLSI设计基础》课程教学课件(讲稿)CMOS运放实验.pdf
- 西安交通大学:《VLSI设计基础》课程教学课件(讲稿)第4章 CMOS数字电路基础.pdf
- 西安交通大学:《VLSI设计基础》课程教学课件(讲稿)第3章 MOS晶体管模型与CMOS模拟电路基础(运算放大器).pdf
- 西安交通大学:《VLSI设计基础》课程教学课件(讲稿)第3章 MOS晶体管模型与CMOS模拟电路基础(MOS晶体管模型、CMOS模拟电路基本模块、单级CMOS放大器).pdf
- 西安交通大学:《VLSI设计基础》课程教学课件(讲稿)第2章 CMOS工艺及版图.pdf
- 西安交通大学:《VLSI设计基础》课程教学课件(讲稿)第1章 集成电路设计概论(主讲:程军).pdf
- 中国科学技术大学:《数据结构》课程教学课件(PPT讲稿)第3章 栈和队列.pps
- 中国科学技术大学:《数据结构》课程教学课件(PPT讲稿)第4章 串和数组.pps
- 中国科学技术大学:《数据结构》课程教学课件(PPT讲稿)第5章 二叉树和树.pps
- 中国科学技术大学:《数据结构》课程教学课件(PPT讲稿)第6章 图.pps
- 中国科学技术大学:《数据结构》课程教学课件(PPT讲稿)第7章 查找表.pps
- 中国科学技术大学:《数据结构》课程教学课件(PPT讲稿)第8章 排序.pps
- 中国科学技术大学:《数据结构与数据库》课程教学课件(PPT讲稿)第一章 绪论.pps
- 中国科学技术大学:《数据结构与数据库》课程教学课件(PPT讲稿)第二章 线性表.pps
- 中国科学技术大学:《数据结构与数据库》课程教学课件(PPT讲稿)第三章 栈和队列.pps
- 中国科学技术大学:《数据结构与数据库》课程教学课件(PPT讲稿)第五章 数组.pps
- 中国科学技术大学:《数据结构与数据库》课程教学课件(PPT讲稿)第六章 二叉树和树.pps
- 中国科学技术大学:《数据结构与数据库》课程教学课件(PPT讲稿)第七章 图.pps
- 中国科学技术大学:《数据结构与数据库》课程教学课件(PPT讲稿)第九章 查找表.pps
- 中国科学技术大学:《数据结构与数据库》课程教学课件(PPT讲稿)第十章 排序.pps
- 中国科学技术大学:《数据结构与数据库》课程教学课件(PPT讲稿)第一章 绪论.pps
- 中国科学技术大学:《数据结构与数据库》课程教学课件(PPT讲稿)第二章 关系数据库.pps
- 中国科学技术大学:《数据结构与数据库》课程教学课件(PPT讲稿)第三章 关系数据库标准查询语言SQL.pps
- 中国科学技术大学:《数据结构与数据库》课程教学课件(PPT讲稿)第四章 关系数据库设计理论.pps
- 中国科学技术大学:《数据结构与数据库》课程教学课件(PPT讲稿)第六章 数据库设计.pps
- 《大学计算机基础》课程教学资源(二级公共基础知识)课程教学课件(PPT讲稿)第1章 数据结构与算法(1.1).pptx
