- 1、本文档共117页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch2- 线性表
上堂课要点回顾 数据结构课程——涉及数学、计算机硬件和计算机软件 数据结构定义——指互相有关联的数据元素的集合,用D_S=( D, S ) 或 S=( D, R) 表示。 数据结构内容——数据的逻辑结构、存储结构和运算 抽象数据类型——指一个数学模型及定义在该模型上的一组操作,含有原子类型、固定聚合类型、可变聚合类型,用(D,S,P)三元组表示 算法效率指标——时间效率和空间效率 第2章 线性表 第3章 栈和队列 第4章 串 第5章 数组和广义表 线性结构的特点: ① 只有一个首结点和尾结点; ② 除首尾结点外,其他结点只有一个直接前驱和一个直接后继。 第2章 线性表 2.1 线性表的(定义)逻辑结构 2.2 线性表的顺序表示和实现 2.3 线性表的链式表示和实现 2.4 应用举例 —一元多项式的表示 2.1 线性表的(定义)逻辑结构 例1 分析26 个英文字母组成的英文表 ( A, B, C, D, …… , Z) 练:判断下列叙述的正误: 1. 数据的逻辑结构是指数据元素之间的逻辑关系,是用户按使用需要建立的。 2. 线性表的逻辑结构定义是唯一的,不依赖于计算机。 3. 数据结构是指相互之间存在一种或多种关系的数据元素的全体。 4. 线性结构反映结点间的逻辑关系是一对一的。 一维向量是线性表,但二维或N维数组不是。 “同一数据逻辑结构中的所有数据元素都具有相同的特性”是指数据元素所包含的数据项的个数都相等。 要点回顾 2.2 线性表的顺序表示和实现 2.2.1 顺序表的表示 用一组地址连续的存储单元依次存储线性表的元素,可通过数组V[n]来实现。 线性表顺序存储特点: 1. 逻辑上相邻的数据元素,其物理上也相邻; 若已知表中首元素在存储器中的位置,则其他元素存放位置亦可求出(利用数组下标),所以顺序存储结构是一种随机存取的存储结构。 存储地址计算方法是(参见存储结构示意图): 设首元素a1的存放地址为LOC(a1)(称为首地址), 设每个元素占用L个存储单元(地址长度), 则表中任一数据元素的存放地址为: LOC(ai+1) = LOC(ai)+L LOC(ai) = LOC(a1) + L *(i-1) 线性表的顺序存储结构示意图 例1 一个一维数组M,下标的范围是0到9,每个数组元素用相邻的5个字节存储。存储器按字节编址,设存储数组元素M[0]的第一个字节的地址是98,则M[3]的第一个字节的地址是 2.2.2 顺序表的实现(或操作) 2.2.2 顺序表的实现(或操作) 实现步骤: 将第i 至第n 位的元素向前移动一个位置; 表长减1。 注意:事先需要判断,删除位置i 是否合法? 应当有1≤i≤n 或 i=[1, n] 非递减线性表合并的C程序 void MergeList( SqList La, SqList Lb, SqList Lc ) //算法2.7 { //已知顺序线性表La和Lb的元素按值非递减排列。 //归并La和Lb得到新的顺序线性表Lc,Lc的元素也按值非递减排列 ElemType *pa,*pa_last,*pb,*pb_last,*pc; pa=La.elem; pb=Lb.elem; Lc.listsize=Lc.length=La.length+Lb.length;//不用InitList()创建空表Lc pc=Lc.elem=(ElemType *)malloc(Lc.listsize*sizeof(ElemType)); if ( !Lc.elem ) exit(OVERFLOW); // 存储分配失败 pa_last=La.elem+La.length-1; pb_last=Lb.elem+Lb.length-1; while(pa=pa_lastpb=pb_last) // 表La和表Lb均非空 { //归并 if(*pa=*pb) *pc++ = *pa++; else *pc++ = *pb++; } while (pa=pa_last) // 表La非空且表Lb空 *pc++ = *pa++; // 插入La的剩余元素 while (pb=pb_last) // 表Lb非空且表La空 *pc++ = *pb++; // 插入Lb的剩余元素 } 2.2.3 顺序表的运算效率分析 算法时间主
您可能关注的文档
- catia曲面经典.ppt
- CC++经典程序完美打印版(适合笔试).doc
- CATIA的GSD圆角 超详细60多页.docx
- CAXA曲线和曲面.ppt
- CAXA实体设计入门向.ppt
- CCTV-3-光学原理.ppt
- CCMMK+TPS升级步骤.ppt
- cdma2000_通信流程.ppt
- CB发动机培训资料.ppt
- CDMA系统移动性管理.ppt
- 回顾当初为了谋生出仕而今感到悲哀自语文试卷讲评.pdf
- 综合学习azinci looked everywhere到处看.pdf
- 说明综合vbbbbbbb bbbbbbbbbbb谱子clocks-rock 4.pdf
- 内容案例下午environmental systems and societies paper.pdf
- 广播新闻告说2014uks增长率为2 economics济学.pdf
- ashrae美国采暖与制冷工程协会.pdf
- 参考惊人大脑zing brain lpZ1.pdf
- 文案gwd24可用于模考.pdf
- 流量分配问题在平行流动热交换器pega ashrae.pdf
- 工厂块-转换映射参考团队rad hqfactory blocks v阻止OSCV0.pdf
文档评论(0)