第2章 线性表(简).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
§2.1 线性表的类型定义 一、线性表的定义 n个数据元素的有限序列(a1,a2,….,an) 。 DS = (D,R ) LIST = (D,R), D={ai∣ai∈数据对象集,i∈1..n ,n ?0 } R={ai-1, ai ∣ai-1, ai∈D,i∈2..n } 〖例〗 将表中x元换成y元。 操作顺序 ① 找到x ② 记住位置 ③ 删去x ④ 插入y于对应位 〖例〗 有序表的合并 P20 mergeList( List La, List Lb, List Lc ) 结论 使用不同的算法策略,可得到不同时间复杂度的算法 输入线性表的特征会影响算法的策略 (是否有序?…) 输出线性表的特征会影响算法的策略 (是否有序?…) §2.2 线性表的顺序表示和实现 §2.2 线性表的顺序表示和实现 §2.2 线性表的顺序表示和实现 §2.2 线性表的顺序表示和实现 C中的动态分配与释放函数 void *malloc(unsigned int size) 生成一大小为size的结点空间,返回该空间的起始地址; free(void *p) 回收p所指向的结点空间; void *realloc(void *p, unsigned int size) 将p所指向的已分配内存区的大小改为size,size可以比原分配的空间大或小。 §2.2 线性表的顺序表示和实现 Status ListInsert_Sq(SqList L, int i, ElemType e) 算法设计(算法2.4) 参数:顺序表L、插入位置i、插入元素e 插入分析: 第i个位置放e,则原来第i~L.length个数据元素必须先后移,以腾出第i个位置; (后移的顺序是从最后一个元素开始,逐个往后移) for ( j = L.length-1; j = i-1; j--) L.elem[j+1] = L.elem[j]; // 后移 L.elem[i -1] = e; //第i个元素存放在L.elem[i-1]中 L.length = L.length+1; 合法的位置:i:1..L.length+1 上溢及处理: 上溢发生的条件:L.length≥L.listsize, 处理:先申请一个有一定增量的空间:申请成功则原空间的元素复制到新空间,修改L.listsize,再进行插入工作;否则报错退出。 §2.2 线性表的顺序表示和实现 §2.2 线性表的顺序表示和实现 §2.2 线性表的顺序表示和实现 §2.2 线性表的顺序表示和实现 §2.2 线性表的顺序表示和实现 胖子的优势 §2.2 线性表的顺序表示和实现 在顺序存储结构上实现线性表的优缺点: 优点:使用方便,实现方便,简单直观 逻辑与物理一致,存储位置与表元线性关系是简单映射 随机存取元素(存取元素时间相等),即元素定位公式化 ? 两个域是广义的,数据域可以有多个数据项, 就职能、功能而言,仅此2个! ? 存储单元可是连续的,也可是不连续的,由指针负责“联系”! ? 线性链表 链表的每个结点中只包含一个指针域,又称单链表 ?头指针 第一个数据元素的存储地址作为线性表的基地址 ? 链头结点 无data值,指向表首元; 链尾结点 无next值,链为空。 §2.3 线性表的链式表示和实现 看P32图2.10与P27图2.5,对比 【定义】全体链成环形,改链尾指向链首即得。 结点 数据域 + 指针域(链) 仍是线性链 头结点仍存在——定义为末结点指向头结点; 尾结点 仍存在——但链域已用非空,指向头结点 定义(如右) 操作 成组成对进行,要讲顺序 〖例〗插入P36 删除P37 实现 插入、删除。 ? 结点 数据域 + 指针域(链域) ? 链 各结点之间以指针相连的数据结构 ? 线性链表 n个结点链结成的线性表 链头 链尾 链空 带头结点/不带头结点 一元多项式相加示意 *-------*-------*--------* + 0---0-------0---0---0--------0 第二章小结 线性表是最常用的基本数据结构,其数据组织成线性顺序。 线性表在设计有效的算法、解决

文档评论(0)

82393aa + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档