- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构线性表ppt概要
如: SqList La; La.elem La. length La. listsize 顺序存储结构的优缺点 优点 逻辑相邻,物理相邻 可随机存取任一元素 存储空间使用紧凑 缺点 插入、删除操作需要移动大量的元素 预先分配空间需按最大空间分配,利用不充分 表容量难以扩充 由此看出: 顺序表适用于查找操作,不适合做大量与插入、删除有关的操作。 单链表特点 它是一种动态结构,需要时用malloc()函数或运算符new申请 不需预先分配空间 指针占用额外存储空间 不能随机存取,查找速度慢,适合对线性表做插入与删除操作 由此得出: 线性链表适用于插入、删除操作,查找操作要花费较多的时间。 求两个一元多项式的和 [例] pa(x)=7+3x+9x8+5x17 pb(x)=8x+22x7-9x8 求:pa=pa+pb 课堂练习 1.写出用顺序表实现任意n个整数的就地逆置算法。 2.写出用带头结点的单向链表实现任意n个整数的就地逆置算法。 双向链表的操作特点: “查询” 和单链表相同 “插入” 和“删除”时需要同时修改两个方向上的指针。 ai-1 ai e s-next = p-next; p-next = s; s-next-prior = s; s-prior = p; p s ai-1 ai 插入 ai-1 删除 ai ai+1 q=p-next; p-next = p-next-next; p-next-prior = p; delete(q); p ai-1 q 实现方法: 借助于结构体数组实现链表。 静态链表的定义 # define MAXSIZE 链表可能的最大长度 typedef sturct { ElemType data ; int next; } StaticListType[MAXSIZE] StaticListType sa; 数据 指针 sa[i].data sa[i].next 线性表中第i+1个数据元素: 存储特点:所有的结点顺序存储,但位置不表示结点之间的逻辑关系。 静态链表 好处 :由用户自己来管理。所需整个空间的大小不变。但执行时,数据元素之间的关系变了,只修改指针即可。 例 头指针 f 0 1 2 3 4 5 6 7 8 9 data 75 62 83 44 57 94 50 68 next 4 3 8 6 7 2 -1 5 1 0 4 7 5 2 8 f 44 50 57 62 68 1 3 6 75 83 94 ^ 五、有序表类型 ADT Ordered_List { 数据对象: S = { xi|xi ? OrderedSet , i=1,2,…,n, n≥0 } 集合中 任意两个 元素之间 均可以 进行比较 数据关系:R = {xi-1, xi | xi-1, xi ? S, xi-1≤ xi, i=2,3,…,n } 线性表中的数据是从小到大排序的。 基本操作: … … … … LocateElem( L, e, q, int(*compare)(ElemType,ElemType) ) 初始条件:有序表L已存在。 操作结果:若有序表L中存在元素e,则 q指示L中第一个值为 e 的元素的位置,并返回函数值TRUE;否则 q 指示第一个大于 e 的元素的前驱的位置,并返回函数值FALSE。 Compare是一个指向有序判定函数的指针变量 ( 12, 23, 34
文档评论(0)