- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.单链表基本运算的实现.ppt
* 有序线性链表合并(pa-data == pb-data) pa pb La Lb Lc = La pc if ( pa-data == pb-data ) { pc-next = pa; pc = pa; pa = pa-next; q = pb; pb = pb-next; free( q ); } * 有序线性链表合并(pa-data pb-data) pa pb La Lc = La pc Lb * 有序线性链表合并(pa-data pb-data) pa=NULL pb La Lc = La pc 若La(Lb)线性链表全部加入到Lc中,只需要把另一个链表的剩余部分完整地加入Lc中即可。 pc-next = pa ? pa : pb; Lb * 有序线性链表合并 pa pb Lc = La pc Lb La free( Lb ); * 有序线性链表合并 pa pb Lc = La pc Lb La * P358 综合实验题1 链表综合算法设计 #define MaxSize 100 typedef struct node { int no; //职工号 char name[10]; //姓名 int depno; //部门号 float salary; //工资数 int pno; //职工号指针 int pdepno; //部门号指针 int psalary; //工资数指针 }EmpType; 2.4 线性表的应用 * 静态链表 有些高级程序设计语言没有指针类型,可以用数组来表示和实现一个链表,称为静态链表。 定义如下: #define MAXSIZE 100 //最多元素个数 typedef struct { ElemType data; //数据元素 int next; //后继元素在数组中的下标 }SLinkedList[MAXSIZE]; 定义静态链表L:SLinkedList L; * 静态链表 SL data next 0 4 1 6 6 2 3 3 3 4 1 4 2 2 5 9 -1 6 8 5 7 8 9 10 11 用静态链表表示线性表 L=(2,3,4,6,8,9) 把SL[0]理解为“头结点”,第1个元素的位置由SL[0].next指出 空指针用-1表示 指针后移:i=SL[i].next 数组下标 静态指针 * 静态链表 静态链表的使用跟顺序表一样,都需要预先分配较大的空间 在进行插入删除操作时,不需要移动数据元素,仅需修改静态指针即可 * (1) 理解线性表的逻辑结构特性。 (2) 深入掌握线性表的两种存储方法,即顺序表和链表,体会这两种存储结构之间的差异。 (3) 重点掌握顺序表和链表上各种基本运算的实现。 (4) 综合运用线性表这种数据结构解决一些复杂的实际问题。 本章小结 * 教材 P61 练习题2 习题1、2、4 学习指导 第2章 P24 2.3.4 2 P25 2.3.5 2、5、7、8 作 业 * 作 业 设顺序表L是一个非递减有序表,试写一算法,将x插入L中,并使L仍是一个有序表。 设单链表L是一个非递减有序表,试写一算法,将x插入L中,并使L仍是一个有序表。 教材 P61 练习题2 习题1、2、4 * 3月17日上机题目 本周交第2章作业 P61 实验题2.1 ,写实验报告 P62 实验题2.2 * 上机安排 文计131-1 402机房 座位随便坐,用u盘或mp3随时保存自己上机做的东西 不准戴耳机,不准玩游戏 没有严格的上下课,课间同样保持安静 下课时正常关闭计算机,将凳子摆放整齐 预习相关内容 * 预备知识 上机实验遇到的主要问题 不能正确地输入数据 尤其是字符型数据 不熟悉结构体的概念 函数的传址调用概念不清 指针与链表比较生疏 * 将p!=NULL换成pre!=NULL是不可以的,考虑最后一个结点的销毁 * (5) 输出线性表DispList(L) 逐一扫描单链表L的每个数据结点,并显示各结点的data域值。 void DispList(LinkList *L) { LinkList *p=L-next; while (p!=NULL) { printf(%d,p-data); p=p-n
文档评论(0)