




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
周次:第 周 课次:第 课 授课时间:年 月 日一、 章节内容: 第8章 结构体、共用体和枚举类型 8.5用指针处理链表二、 教学目标:通过本节学习,要求了链表数据的特点和实际运用,掌握简单链表的基本操作原理和应用;学习本章内容可以为今后学习数据结构中的其它链表创建和使用打下基础。三、 教学重点:1) 链表节点的构成及定义2) 简单链表的创建、插入、删除、输出。四、 教学难点:1) 链表节点的构成2) 用结构体解决链表问题(建立、插入、删除、输出和查询)五、 教学方法和授课手段多媒体教室,电子课件,机房。六、 教学过程:预备(复习):结构体的定以及结构型指针变量。(5分钟)一) 课前提问 :现实生活中排队、插队的原理和规则(3分)二) 课程引入:介绍本课程的学习目的、主要学习内容和学习方法。(2分钟)三) 课程新授:(80分钟)复习:结构体的定以及结构型指针变量8.5用指针处理链表链表是一种动态数据结构,在程序的执行过程中可以根据需要随时间系统申请存储空间,动态地进行存储空间的分配。动态数据结构最显著的特点是包含的数据对象个数及其相互关系都可以按需要改变。常用的动态数据结构有链表、循环链表、双向链表三种。8.5.1 什么是链表1单链表的结构图8-5表示的是单链表的结构1200120020001800240012200034180056200078NULLhead2. 链表节点的构成由于每个结点包含数据域或者指针域两部分内容,所以链表结点采用结构体表示。例如链表结点的数据结构定义如下:struct node int num; char name10; float score; struct node *next;3简单链表下面通过一个例子来说明如何建立和输出一个简单静态链表。【例 8.10】建立一个如图8-6所示的简单链表,它由三个学生数据结点组成。请输出各结点中的数据。4动态存储分配函数所谓“动态链表”就是链表的结构是动态分配和存储的,在程序的执行过程中要根据需要随时向系统申请存储空间,动态地进行存储空间的分配。1) malloc函数 其函数原型为:void * malloc(unsigned size)2) calloc函数 其函数原型为:void * calloc(unsigned n,unsigned size)3) free函数其函数原型为:void * free(void * ptr)下面的程序就是mallloc()和free()两个函数配合使用的简单实例。【例 8.11】存储空间的动态分配。8.5.2 动态链表的基本操作链表有五种基本操作,即:建立、插入、删除、输出和查找。1 单链表的创建【例 8.12】建立一个链表存放学生数据。为简单起见,我们假定学生数据结构中有学号和年龄两项。编写一个建立链表的函数creat。2.单链表的插入链表的插入是指将一个结点插入到一个已有的链表中。下面通过一个实例来说明单链表的插入操作。【例 8.13】以前面建立的动态链表为例,编写一个函数,使其能够在链表中指定的位置插入一个结点。3. 单链表的删除链表中不在使用的数据,可以将其从表中删除并释放其所占用的空间,但注意在删除结点的过程中不能破坏链表的结构。下面通过一个实例来说明单链表的删除操作。【例 8.14】以前面建立的动态链表为例,编写一个删除链表中指定结点的函数delet。4单链表的输出链表的输出比较简单,只要将链表中的各个结点数据依次输出即可。下面通过一个实例说明单链表的输出操作。【例 8.15】编写一个输出链表的函数print。七、 作业安排:1) 完成课后习题: 单项选择题(10),程序设计题(4)2)上机调试例题:【例8.9】-【例8.16】3) 用比较法自学8.6 共用体型和8.7枚举型教学过程(第三次课)8.6共 用 型例如:在一个函数的三个不同的程序段中分别使用了字符型变量c、整型变量i、单精度型变量f、如果我们把它们定义结构型变量s,s中含有三个不同类型的成员,此时需要占用7个内存单元,如果我们把它们定义成一个共用型变量u,u中含有三个不同类型的成员。此时,给三个成同一共只分配4个内存单元,具体分析如图8-13:定义为结构型struct s1char ch; int i; float f;s; chif142 定义为共用型union u1char ch; int i; float f;u; fich8.6.1共用型的定义union共用型名数据类型1 成员名1;数据类型2 成员名2;数据类型n 成员名n;注意在右花括号的后面有一个语句结束符“分号”。其中:共用型名是用户取的标识符。 数据类型通常是基本数据类型,也可以是结构型、共用型等其它数据类型。 成员名是用户取的标识符,用来标识所包含的成员名。该定义语句定义了一个名为“共用型名”的共用型,该共用型中含有n个成员,每个成员都有确定的数据类型和名称。这些成员将占用相同的内存单元。 例如:为了节省内存,可以将不同的使用的三个数组定义在如下的一个共用型中,总计可节省300个单元: union c_i_fchar c1100; /*该成员占用100个单元*/ int i2100; /*该成员占用200个单元*/ float f3100; /*该成员占用400个单元*/; /*该共用型数据共用400个单元*/8.6.2共用型变量的定义当定义了某个共用型后,就可以使用它来定义相应共用类型的变量、数组、指针等。【例8.17】共用型变量和数组定义例。8.6.3共用型变量的引用1.共用型变量或数组元素成员的引用格式如下:共用型变量名.成员名其中“.”就是在结构型提到的成员运算符。【例8.18】共用型变量成员的引用。【例8.19】共用型的嵌套结构。【例8.20】假如一个学生的信息表中包括学号、姓名、性别和一门课的成绩。而成绩通常又可采用两种表示方法:一种是五分制,采用的是整数形式;一种是百分制,采用的是浮点数形式。现要求编一程序,输入一个学生的信息并显示出来。2、引用和指针变量的使用方法 共用型变量成员地址的引用和指针变量的使用格式如下:指针变量=&共用型变量名.成员名 存放共用型变量成员地址的指针变量类型必须和该成员的类型相同。3共用型变量地址的引用和指针变量的使用方法指针变量=&共用型变量名存放共用型变量地址的指针变量类型必须和共用型变量是同一种共用型。共用型和结构型相同,当某个共用型指针变量指向共用型变量时,共用型变量成员的引用方法也有两种: (*指针变量).成员名 指针变量-成员名【例8.21】共用型数据地址的引用和指向共用型数据的指针变量使用例8.7枚举型8.7.1枚兴型的定义 枚举型需要用户自己定义,定义方法如下: enum 枚举型名 枚举常量1,枚举常量2,枚举常量n;注意在右花括号的后面有一个语句结束符”分号”。1、例如:定义一个表示星期的枚举型:enum weeksun,mon,tue,wed,thu,fri,sat;2、例如:表示三原色的枚举型可定义如下:enum color1red=2,yellow=4,blue=7;3、例如:重新定义一个表示星期的枚举型:enum week1sun,mon,tue=5,wed,thu,fri,sat;8.7.2枚举型变量的定义当某个枚举型定义后,可以用这种数据枚举型来定义变量、数组。定义的方法有三种。1. 先定义枚举型,后定义枚举型变量、数组enum colorred,yellow,blue;enum color color_1,color_22; /*定义一个枚举型变量color1和具有两个元素的数组color_2*/8.7.3枚举型变量的引用枚举型变量或数组元素的引用方法就是变量名或数组元素名。枚举型变量或数组元素的使用只能是下列几种情况。1. 【例8.22】给变量或数组元素赋值,格式为:枚举型变量或数组元素=同一种枚举型常量名 C语言规定,虽然枚举常量值是0或自然数,但是不能直接将整型赋予枚举型变量或数组元素。但是可以通过类型强制转换来赋值,请看下面的程序段。 enum color red,yellow,blue c_1; c_1=yellow; /*正确*/ c_1=1; /*错误,不能直接将整型赋予枚举型变量*/ c_1=(enum color) 1; /*正确,通过类型强制转换来赋值*/2. 【例8.23】在循环中用枚举变量或数组元素控制循环。8.9用户自定义类型用户字定义类型名的方法是通过下列定义语句实现的。格式 typedef 类型名1 类型名2;1. 基本类型的自定义对所有系统默认的基本来性可以利用下面的自定义类型语句来重新定义类型名。格式 typedef 基本来性说明符 用户类型名;功能将“基本来性说明符”定义为用户自己的“用户类型名”。【例8.24】基本类型自定义例。 2数组类型的自定义对数组类型可以利用下面的自定义类型语句来定义一个类型名。格式typedef 类型说明符 用户类型名数组长度;功能以后可以使用“用户类型名”来定义由“类型说明符”组成的数组,其长度为“数组长度”。【例8.25】数组类型自定义例。3结构型、共用型的自定义对程序中需要的结构型可以利用下面的自定义类型语句来定义一个类型名。格式typedef struct 类型说明符 成员名1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年航空航天企业飞行领航员安全生产知识考试试题及答案
- 第4课 共同开发建设祖国说课稿-2025-2026学年中华民族大团结-中华民族大团结
- 高校和社区服务合同模板(3篇)
- 高铁站土建施工合同(3篇)
- 安徽司法考试试题及答案
- 河北经贸大学校园汽车租赁服务及车辆安全检查合同
- 本科毕业生就业服务及权益保障协议
- 2025公务员线上面试题及答案
- 舞蹈生专业测试题及答案
- 祖国我爱你教学设计课件
- 医院人事管理制度岗前培训
- 车险合作协议补充协议
- 高尔夫tpi教学课件
- 2025至2030年中国软包电池行业市场供需规模及投资前景预测报告
- 老年共病管理中国专家共识(2023)课件
- 2025年新高考2卷(新课标Ⅱ卷)语文试卷
- 外卖危害知多少
- DB31/T 968.1-2016全过程信用管理要求第1部分:数据清单编制指南
- 钢材代储协议书
- 医学决定水平核心解读
- 原始股入股协议书合同
评论
0/150
提交评论