级 高 语 言 设 计 程 序 2009.8 朱立华 俞琼 王立柱 * 章节自测及在线编程练习: 主讲人:朱立华 2009.8 朱立华 俞琼 王立柱 * 第十二章 高级程序设计 2009.8 朱立华 俞琼 王立柱 * 2009.8 朱立华 俞琼 王立柱 * 内容提要 如何通过指针和结构体的定义实现单链表结构 学生档案成绩管理系统的设计与实现 单链表 本章介绍单链表的相关知识以及一个管理系统的模块化设计方法, 综合运用所学知识实现一个完整的系统 单链表常用操作的实现方法:建立、遍历、插入、删除、查找、逆置 内容提要 其他类型的链表结构简介 链表结构 链表的常规操作 动态演示 动态演示 2009.8 朱立华 俞琼 王立柱 * 重点难点提示 重点难点提示 动态演示 动态演示 动态演示 创建 遍历 删除 查询 插入 2009.8 朱立华 俞琼 王立柱 * 单链表 为什么需要链表结构? 一批类型相同的数据用数组存储所存在的问题: (1)定义静态数组时必须指定数组的元素个数,此后无法更改数组大小,可能造成空间浪费或不足 (2)用指针可以申请动态数组,空间不会浪费或不足,但仍然是需要连续的存储空间 (3)在数组中插入或删除元素时需要大量移动元素,效率低 什么是链表结构? 与数组不同,数组元素逻辑上相邻物理地址上也相邻,而链表结构其数据元素作为一个个结点的数据域,结点中另有指针域存储逻辑上相邻的其他元素的起始地址,单链表较常用 数据域 指针域 单链表的一个结点 2009.8 朱立华 俞琼 王立柱 * 单链表 一个单链表示例: 链表结构的优点是: 系统不必为应用程序分配一组连续的空间,可以充分利用系统的零散空间;有一个元素就生成一个结点,空间不浪费 如果内存空间足够大,理论上这一批数据的容量不受限制 对于插入、删除等操作不必通过移动元素实现,效率高 单链表的结点定义----用结构体和指针递归定义而成 1 2 3 4 0 这是最重要的头指针 最后一个结点的指针域值为0(NULL) 2009.8 朱立华 俞琼 王立柱 * 单链表 单链表结点定义的格式: typedef int Type; struct Node { Type data; struct Node *next; }; 特别提醒:next前的*号不能丢失,否则就成为死循环定义啦! (一)单链表的建立: 常用的有3种建立方法: 后插法:新结点插入在链表的最尾部,作为新的尾结点 前插法:新结点插入在链表的最前部,作为新的第一个结点 按序插入法:新结点插入在链表的特定部位保持元素值有序 结点的结构体类型定义 单链表结点的数据成员类型不同只需要将int替换成数据成员实际的类型,下面结点的类型定义不变 结点的指针成员名next,类型为struct Node* 结点的数据成员名data,类型为Type 用Type作为类型别名,使结点类型的定义具有更好的通用性 2009.8 朱立华 俞琼 王立柱 * 单链表 无论是哪一种建立方法,共同的操作是: 最主要的是指向第一个结点的头指针,有时需要设一个指向最后一个结点的尾指针以方便操作,注意头指针该如何修改 逐个申请结点空间 对每个结点的数据域赋值 每个结点的指针域如何赋值取决于建立方法 将新结点加入到链表中,即修改链表中某一个结点的指针域 方法1:后插法的关键是: 新结点的指针域值一定为空,因为它是新的最后一个结点 头指针只要修改一次,即在空链状态下插入第一个点时修改 保证tail指针始终指在当前链表的最后一个结点处,即新结点p插入链表之后,要做赋值: tail=p; 以后通过tail-next=p;就可以实现在尾部插入新结点 动态 演示 过程 2009.8 朱立华 俞琼 王立柱 * 单链表 方法2:前插法的关键是: 新结点的指针域值一定赋值为head,成为新的第一个结点 头指针每插入一个新结点就要修改一次,保证永远指向新的第一个结点处 这种插入方法无需定义tail指向最后一个结点,代码最简洁 方法3:按序插入法的关键是: 首先要通过搜索找到新结点的插入位置,这在后面有序插入算法中介绍 假设找到的插入位置是在p1指针所指的结点后,在p2指针所指的结点前插入 则关键的语句为:p1-next=p; 和 p-next=p2; 动态 演示 过程 动态 演示 过程 2009.8 朱立华 俞琼 王立柱 * 单链表 单链表的遍历:从头指针开始,顺着各个指针,依次访问链表中的各个结点 关键是确定遍历的条件,即何时循环,何时终止 根据单链表的最后一个指针域为空,可以让一个工作指针指向当前结点,不断后移,如果该指针为空,则链表遍历结束 关键代码: for(p = head; p; p = p-next)
您可能关注的文档
- 《现代诗两首·长城谣·一片槐树叶》课件精要.ppt
- 《心理健康》悦纳自己.ppt
- 《心田上的百合花开》课堂用.ppt
- 《新课程实用课堂教学艺术》.ppt
- 《学习方略》学高中物理人教必修教师用书配套质点参考系和坐标系.ppt
- 《植物的睡眠》教学().ppt
- 《中国鲍曼不动杆菌感染诊治与防控专家共识》sific[].ppt
- 《中国的古代艺术》(人民必修).ppt
- 《中国石拱桥》定稿.ppt
- 《昼夜对动植物的影响》.ppt
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 原调正谱G小小蝴蝶la farfalletta钢琴伴奏高清打印版.pdf VIP
- 上海大学2024-2025学年第1学期《高等数学(上)》期末考试试卷(B卷)附参考答案.pdf
- 广发证券-交通银行-601328-零售转型提速,定增落地夯实资本根基.pdf
- 上海大学2024-2025学年第1学期《高等数学(上)》期末考试试卷(A卷)附参考答案.pdf
- 循环系统护理小讲课.pptx
- 建筑屋面西瓦专项施工方案(范本).doc VIP
- 2024年山东铝业职业学院单招综合素质考试题库及答案1套.docx VIP
- 探究TIPS术后支架堵塞的影响因素及抗凝治疗的必要性:基于多维度分析与临床实践.docx
- 成品仓库出货明细表.pdf VIP
- 贵州省黔西南州2025年中考数学试卷及答案.pdf VIP
原创力文档

文档评论(0)