第二章线性表复习.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章线性表复习

1.定义:线性表是由n(n≥0)个数据元素(结点)a1,a2,…,an组成的有限序列。 【例1】一个大小为10的一维数组A,每个数组元素用相邻的8个字节存储。假设存储数组元素A[0]的第一个字节的地址是1020,则A[6]的第一个字节的地址是 #define MAXNUM 顺序表最大元素个数 typedef struct{ }Sqlist; (1)单链表元素的读取GetElem(L, i, e) (3) 删除操作ListDelete (L, i, e) 头插法思路: 尾插法思路(正位序输入 ): 尾插法思路: 算法分析: void del_LQ(LinkList L,int x,int y) { }// del_LQ 头插法 头插法 尾插法 尾插法 (2)单向循环链表元素的读取 (7)创建双向循环链表 头插法 尾插法 搜索:需要两个指针搜索两个链表; 比较:比较结点数据域中数据的大小; 插入:将两个结点中数据小的结点插入新链表。 3 5 8 11 ^ 2 6 7 12 ^ 9 Pa、Pb用于搜索La和Lb, Pc指向新链表当前结点 La Lb Pb Pa Lc Pc =∧ 不需要重建结点空间,只要修改指针即可 void MergeList_L(LinkList La, LinkList Lb,LinkList Lc) {//合并两个有序表 } // MergeList_L pa = La-next; pb = Lb-next; // p指向第一个结点 Lc=pc=La; while (pa pb) if(pa-data =pb-data ){ pc-next =pa;pc=pa;pa=pa-next ;} else { pc-next =pb;pc=pb;pb=pb-next ; } pc-next =pa?pa:pb; 假如 x=3 y=6 算法思路: 1 3 8 4 5 9 L ^ P q q q 【例2-8】设计一个算法,要求删除线性表 中介于x和y之间的数据。 p=L; while (p-next) { if (p-next-data=xp-next-data=y) { q=p-next; p-next=q-next; delete(q); } else p=p-next; } 单链表的特点: 1.它是一种动态结构,整个存储空间为多个链表共用。 2.指针占用额外存储空间。 3.在链表中,元素的“位序”概念淡化,结点的 “位置”概念加强。 4.不能随机存取,查找速度慢,但是插入、删除操作很方便。 1.定义:最后一个结点的指针域的指针又指回第一个结点的链表,使链表构成环状。 a1 a2 … ... an 带头结点的单循环链表 h 空表 2.3.2 单向循环链表 特点:从表中任一结点出发均可找到表中其他结点,提高查找效率。 单循环链表 a1 a2 … ... an ^ 带头结点的单循环链表 typedef struct LNode{ ElemType data; struct LNode* next; } LNode, *CircleLinkList; 2.存储结构(和单链表相同) 与单链表基本一致,它们仅在循环终止条件上有所不同。 3.基本操作 单链表: p==NULL或p-next==NULL 循环链表:p==L 或p-next==L L data next p data next p L-next = p; (1) 单向循环链表创建 p-next = L-next; void CreatListF(CircleLinkList L) { ?? } // CreatListF char ch; ? L=new LNode; //头指针 ??L-next=L;??? //链表开始为空 ??ch=getchar(); //读入第1个字符 ??while(ch!=\n){ ?????? p=new LNode; //生成新结点 ???????p-data=ch;?? ?? p-next= L-next; L-next =p; ?????? ch=getchar();? //读入下一字符 ???} ? L data next p

文档评论(0)

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

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

1亿VIP精品文档

相关文档