华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第二章 线性表(1/2)2.1 线性表的定义 2.2 线性表的顺序表示

数据结构华中科技大学计算机学院(1)
数据结构 华中科技大学计算机学院(1) -------------------------------------------------

第二章线性表 2.1线性表的定义 2.1.1线性表的逻辑结构 1.线性表— 由n(n≥0)个数据元素(a1,a2,,.,an)构成的 有限序列 记作:L=(a1,a2,,an 首元素 an 尾元素 2.表的长度(表长)——线性表中数据元素的数目。 3.空表——不含数据元素的线性表
第二章 线性表 2.1 线性表的定义 2.1.1 线性表的逻辑结构 1.线性表── 由n(n≥0)个数据元素(a1,a2,...,an)构成的 有限序列。 记作: L=(a1,a2,...,an) a1──首元素 an──尾元素 2.表的长度(表长)──线性表中数据元素的数目。 3.空表──不含数据元素的线性表

线性表举例 例1.字母表L1=(A,B,C,,,Z 表长26 例2.姓名表L2=(李明,陈小平,王林,周爱玲) 表长4 的” 图书登记表 书名。作者单价(元)数量(册) 序设计语 明10.50500 2L数据结构 陈小平9.80450 nDoS使用手册周爱玲20.50945 表长n
线性表举例 例1. 字母表 L1=(A,B,C,...,Z) 表长26 例2. 姓名表 L2=(李明, 陈小平, 王林, 周爱玲) 表长4 例3. 图书登记表 序号 书 名 作 者 单价(元) 数量(册) 1 程序设计语言 李 明 10.50 500 2 数据结构 陈小平 9.80 450 ... ...... ..... ..... ... n DOS使用手册 周爱玲 20.50 945 表长n

线性表的特征 对于L=(a1,a2, a a: a a 1.a1-1在a1之前,称a1-1是a的直接前驱 (1<i≤n) 2.a+在ai之后,称a1计是a;的直接后继 (1≤i<n) 3.a1没有前驱 4.an没有后继 5.a;(1<i<n)有且仅有一个直接前驱和一个 直接后继
线性表的特征 对于 L=(a1,a2,...,ai-1 , ai,ai+1,...,an) 1.ai-1在ai之前,称ai-1是ai的直接前驱 (1<i≤n) 2.ai+1在ai之后,称ai+1是ai的直接后继 (1≤i<n) 3.a1没有前驱 4.an没有后继 5.ai(1<i<n)有且仅有一个直接前驱和一个 直接后继

2.1.2抽象数据类型线性表的定义 ADJ List 数据对象:L={aiai∈ ElemNet,i=1,2,n,n>=0} 数据关系:R1={ai-1,aiai-1∈D,i=1,2,,,n 基本操作: Iinilist(&L) //构造空表L。 2. LengthList(L) /求表L的长度 3. GetElem( L, i, &e) //取元素ai,由e返回ai 4. Priorelem(L,ce,&pree)//求ce的前驱,由pree返回 5. Insertelem(&L,i,e)//元素ai之前插入新元素e 6 DeleteElem(&L, i) //删除第i个元素 7. EmptyList(L) //判断L是否为空表 8. Clearlist(&L) //置L为空表 JAD List
2.1.2抽象数据类型线性表的定义 ADJ List { 数据对象:L={ai|ai∈ElemSet,i=1,2,,...n,n>=0} 数据关系:R1={|ai-1∈D,i=1,2,,...n} 基本操作: 1.IiniList(&L) //构造空表L。 2.LengthList(L) //求表L的长度 3.GetElem(L,i,&e) //取元素ai,由e返回ai 4.PriorElem(L,ce,&pre_e) //求ce的前驱,由pre_e返回 5.InsertElem(&L,i,e) //在元素ai之前插入新元素e 6.DeleteElem(&L,i) //删除第i个元素 7.EmptyList(L) //判断L是否为空表 8.ClearList(&L) //置L为空表 ...... }ADJ List

说明 1.删除表L中第i个数据元素(1<=i<=n),记作 DeleteElem(&L, i) a 指定序号i,删除ai↑ 1,ai+1 2.指定元素值x,删除表L中的值为x的元素,记作 DeleteElem(&L, X) 3.在元素ai之前插入新元素e(1<=i<=n+1) a 插入e↑ a e. a 4.査找——确定元素值(或数据项的值)为e的元素 给定:L=(a1,a2,,a1,,,,an)和元素e 若有一个a;=e,则称“查找成功”,i=1,2,,,n 否则,称“査找失败
说 明 1.删除表L中第i个数据元素(1<=i<=n),记作: DeleteElem(&L,i) L=(a1,a2,...,ai-1 , ai,ai+1,...,an) 指定序号i,删除ai ↑ L=(a1,a2,...,ai-1,ai+1,...,an) 2.指定元素值x,删除表L中的值为x的元素,记作: DeleteElem(&L,x); 3.在元素ai之前插入新元素e(1<=i<=n+1) L=(a1,a2,...,ai-1 , ai,...,an) 插入e ↑ L=(a1,a2,...,ai-1 ,e, ai,...,an) 4.查找----确定元素值(或数据项的值)为e的元素。 给定: L=(a1,a2,...,ai,...,an)和元素e 若有一个 ai=e,则称“查找成功”,i=1,2,...,n 否则,称“查找失败”

5.排序——按元素值或某个数据项值的递增(或递减)次序 重新排列表中各元素的位置。 例.排序前:L=(90,60,80,10,20,30) 排序后:L=(10,20,30,60,80,90) L变为有序表 6.将表La和表Lb合并为表Lc 例.设有序表 La=(2,14,20,45,80 Lb=(8,10,19,20,22,85,90) 合并为表 Lc=(2,8,10,14,19,20,20,22,45,80,85,90) 7.将表La复制为表Lb La=(2,14,20,45,80) Lb=(2,14,20,45,80
5.排序----按元素值或某个数据项值的递增(或递减)次序 重新排列表中各元素的位置。 例.排序前: L=(90,60,80,10,20,30) 排序后: L=(10,20,30,60,80,90) L变为有序表 6.将表La和表Lb合并为表Lc 例.设有序表: La=(2,14,20,45,80) Lb=(8,10,19,20,22,85,90) 合并为表 Lc=(2,8,10,14,19,20,20,22,45,80,85,90) 7.将表La复制为表Lb La= (2,14,20,45,80) Lb= (2,14,20,45,80)

可利用现有操作组成更复杂的操作: void union list &la, List &lb) alen- List length(La);∥求线性表La的长度 Lb len- List length(Lb);∥求线性表Lb的长度 for(i=l; i<=Lb len; 1++) Getelem(Lb,e),∥取Lb的的第个数据元素赋给e if(! Locateelem( La, e, equa)判断e在La中是否存在 ListInsert(a++ La len,e);∥不存在则插入
可利用现有操作组成更复杂的操作: void union(List &La,List &Lb) { La_len=List_length(La); //求线性表La的长度 Lb_len=List_length(Lb); //求线性表Lb的长度 for (i=1;i<= Lb_len;i++) { GetElem(Lb,i,e); //取Lb的的第i个数据元素赋给e if (!LocateElem(La,e,equal)) //判断e在La中是否存在 ListInsert(La,++La_len,e); //不存在则插入 } }

2.2线性表的顺序表示(顺序存储结构) 2.2.1.顺序分配—将线性表中的数据元素依次存放到计算 机存储器中一组地址连续的存储单元中,这种分配方式称为 顺序分配或顺序映像。由此得到的存储结构称为顺序存储结 构或向量(一维数组) 例.a=(30,40,10,55,24,80,66) 内存状态 304010 55 248066 45678910 C语言中静态一维数组的定义: int a[lll 2345678910
2.2 线性表的顺序表示(顺序存储结构) 2.2.1.顺序分配──将线性表中的数据元素依次存放到计算 机存储器中一组地址连续的存储单元中, 这种分配方式称为 顺序分配或顺序映像。由此得到的存储结构称为顺序存储结 构或向量(一维数组)。 例. a=(30,40,10,55,24,80,66) 内存状态 C语言中静态一维数组的定义: int a[11]; 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 30 40 10 55 24 80 66

(a1,a1,a2,,an)顺序存储结构的一般形式 序号存储状态存储地址 1a1 al b+(i-1)* n an //|自由区 maxleng // b+(maxleng-1)*p 其中:b-—表的首地址/基地址/元素al的地址。 p--1个数据元素所占存储单元的数目。 maxing-最大长度,为某个常数
(a1,a1,a2,...an)顺序存储结构的一般形式 序号 存储状态 存储地址 1 b 2 b+p i b+(i-1)*p n b+(n-1)*p 自由区 maxleng b+(maxleng-1)*p 其中: b----表的首地址/基地址/元素a1的地址。 p----1个数据元素所占存储单元的数目。 maxleng----最大长度,为某个常数。 a1 a2 ... ai ... an // // //
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第一章 绪论.ppt
- 华中科技大学:《C语言程序设计》作业解答4.ppt
- 华中科技大学:《C语言程序设计》作业解答3.ppt
- 华中科技大学:《C语言程序设计》作业4.doc
- 华中科技大学:《C语言程序设计》作业3.doc
- 华中科技大学:《C语言程序设计》作业2.doc
- 华中科技大学:《C语言程序设计》上机作业2.doc
- 华中科技大学:《C语言程序设计》上机作业1.doc
- 华中科技大学:《C语言程序设计》第7章 图.doc
- 华中科技大学:《C语言程序设计》数据结构算法C程序.doc
- 华中科技大学:《C语言程序设计》数据结构算法C程序1.doc
- 华中科技大学:《C语言程序设计》数据结构算法C程序.doc
- 华中科技大学:《C语言程序设计》演示文稿练习题1.ppt
- 华中科技大学:《C语言程序设计》作业9.doc
- 华中科技大学:《C语言程序设计》作业7.doc
- 华中科技大学:《C语言程序设计》作业6.doc
- 华中科技大学:《C语言程序设计》作业5.doc
- 华中科技大学:《C语言程序设计》作业4.doc
- 华中科技大学:《C语言程序设计》作业3.doc
- 华中科技大学:《C语言程序设计》作业2.doc
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第二章 线性表(2/2)2.3 线性表的链式存储结构.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第三章 栈和队列 3.1 栈(stack)3.2 栈的应用举例.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第三章 栈和队列 3.4 队列(排队,queue).ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第四章 字符串/串(string).ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第五章 数组和广义表.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)作业解答3.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)作业解答4.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)作业解答5.ppt
- 华中科技大学:《C语言程序设计》作业解答-图.ppt
- 华中科技大学:《C语言程序设计》作业解答-树.ppt
- 华中科技大学:《C语言程序设计》大型作业.ppt
- 华中科技大学:《C语言程序设计》第十章 内排序.ppt
- 华中科技大学:《C语言程序设计》第十章(10-4) 归并排序.ppt
- 华中科技大学:《C语言程序设计》第十二章 文件.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第六章 树和二叉树 6.1 树的定义 6.2 二叉树(binary tree)6.3 遍历二叉树和线索二叉树.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第六章 树和二叉树 6.3 遍历二叉树和线索二叉树.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第七章 图 Graph 7.1 图的定义和术语 7.2 图的存储结构.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第七章 图 Graph 7.3 图的遍历 7.4 图的连通性问题.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第七章 图 Graph 7.5 有向无环图及其应用 7.6 最短路径.ppt
- 华中科技大学:《数据结构》课程教学资源(PPT课件讲稿)第九章 查找表 9.0 有关的术语 9.1 静态查找表 9.2 动态查找表.ppt