《C语言程序设计》 教案 6 结构体、共用体、枚举类型(8课时).docx
C语言程序设计教学设计 日期:年月日教学内容声明结构体类型、利用结构体变量处理一组数据教学学时2授课教师班级地点周次星期节次教学 目标素质目标知识目标能力目标(1)基本职业素养:遵守工作时间, 使用实践设备时注意用电安全,实践设 备使用完毕后要断电并放于指定位置, 程序设计要注重工程规范,养成良好的 工作习惯。(2)团结协作素养:小组内成员互查 程序代码书写规范性、准确性和完整性, 取长补短,具有责任意识、团队意识与 协作精神。(3)自主学习素养:能根据任务要求, 查找相关资料解决实际问题;能自主完 成练习,培养自主学习的意识与一丝不 苟、实事求是的工作作风。(4)思政和劳动素养:具有一定的辩 证唯物主义运用能力、安全意识、劳动 意识、创新意识、创新能力和强烈的爱 国主义精神。(1)掌握结构体 类型的声明方法(2)掌握结构体 变量的定义、初始化 和引用方法(1)能根据 实际需要声明 结构体类型(2)会用结 构体变量解决 实际问题教学重点1 .结构体类型的声明方法2,结构体变量的定义、初始化和引用方法教学难点结构体类型的声明、结构体变量的引用能力训练 任务任务1:掌握结构体类型的声明方法任务2:掌握结构体变量的定义、初始化和引用方法教学材料(1)教材:朱琨C语言程序设计,机械工业出版社,978-7-111-66954-8, 2021(2)教学资源:电子教案、教学课件、微课视频、在线开放课程(3)仪器与设备:电脑(装有VC+开发环境)C语言程序设计教案 第6单元第3次课3、指向结构体数组的指针当结构体指针变量指向结构体数组中的某个元素时,结构体指针变量的值是该结构体 数组元素的起始地址。【例6.5】用结构体指针变量输出结构体数组。#in elude <stdio.h>stnict Student声明结构体类型学享下百成绩1001Li ping45.01002Zhao nin62.51003He fen92.5学享下百成绩1001Li ping45.01002Zhao nin62.51003He fen92.5intstuID;学charnanie20;姓名floatscore;成绩;int main (void)stnict Student stu 3=1001, ”Li ping”, 45,1002, “Zhao min”, 62.5,(1003, MHe fen 92.5); 定义结构体数组,并赋初值stnict Student *ps; 定义结构体指针变;itpiintf(H学号t 姓名tt 成绩n ”);for(ps=stu; ps<stu+3; ps+)printf(H%-6d%-20s%.lF.tnps-> stu ID, ps->name, ps->score); .【学习检验】教材单元练习第7题。步骤四:任务3:掌握结构体指针变量作函数参数的应用方法(时间:20分钟) 【引导思考】1、结构体数据在函数调用时的传递方式:整体值传递和地址传递2、使用结构体数据的首地址作为函数参数的方法和优点:用指向结构体数据的指针变 量作函数参数,则会减少时间和空间上的开销,大大提高程序执行效率。【例6.6】计算一组学生的平均成绩和不及格人数。/include <stdio.h>struct Student声明结构体类型intstuID;学号charname20;姓名floatscore;成绩);void ave(struct Student *ps, int n);函数声明int main (void)(struct Student stu 5=101 JLi ping”,45,102JZhang piug”,62.5 ,103JHefang”92.5,104,HCheng ling”,87, 105,nWangming,58) );struct Student *pstu=stu;定义结构体指针变量,并指向数组stu首地址ave(pstu, 5);调由ave函数,实参二结构标疳针变量pstu、数值510C语言程序设计教案 第6单元第3次课void ave(struct Student *ps, int n) /形参:结构体指针变量 p$、变量 n int count=0,i;float ave,sum=O;for(i=0; i<n; i+, p§+)(su m=su m+ps->sco re;if(p s->sco re<60) co un t+;)ave=sum/5;printf("平均分二 %.lfn,f,ave);printf("不及格人数二 %dn,f, count);平均分:69.0 不及格人数:2【学以致用】教材单元练习第16、17题。【课后自主学习】教材. 644节:结构体指针数组及其应用。教材单元练习第18题。步骤五:概括基本内容,归纳重点内容(时间:5分钟)1、引导学生概括本次课的基本内容,归纳重点内容(结构体数组的定义形式、初始化 方法和存储形式,结构体指针引用结构体数据的方法,结构体指针变量作函数参数的应用 方法)。2、作业布置:通过教材、PPT和在线课程,复习巩固本次课内容;完成教材相应习题, 学以致用;预习下次课内容(共用体类型、枚举类型、用typedef声明类型别名)。C语言程序设计教学设计 日期:年月日教学内容共用体类型、枚举类型、用typedef声明类型别名教学学时2授课教师班级地点周次星期节次教学素质目标知识目标能力目标11C语言程序设计教案 第6单元第3次课目标(1)基本职业素养:遵守工作时间, 使用实践设备时注意用电安全,实践设 备使用完毕后要断电并放于指定位置, 程序设计要注重工程规范,养成良好的 工作习惯。(2)团结协作素养:小组内成员互查 程序代码书写规范性、准确性和完整性, 取长补短,具有责任意识、团队意识与 协作精神。(3)自主学习素养:能根据任务要求, 查找相关资料解决实际问题;能自主完 成练习,培养自主学习的意识与一丝不 苟、实事求是的工作作风。(4)思政和劳动素养:具有一定的辩 证唯物主义运用能力、安全意识、劳动 意识、创新意识、创新能力和强烈的爱 国主义精神。(1)掌握共用体 的概念和声明方法、 变量的定义及赋值 方法(2)掌握枚举类 型的概念和声明方 法,变量的定义及赋 值方法(3)掌握 typedef 声明类型别名的方 法(1)会根据 实际需要选用 合适的构造类 型(数组、结构 体、共用体、枚 举)(2 )会用 typedef声明类 型别名,以便提 高编程效率、程 序阅读性和移 植性教学重点(1)共用体的概念和声明方法、变量的定义及赋值方法(2)枚举类型的概念和声明方法,变量的定义及赋值方法(3) typedef声明类型别名的方法教学难点(1)共用体类型的应用方法(2)枚举类型的应用方法(3) typedef声明类型别名的应用方法能力训练 任务任务1:利用共用体类型节省内存空间任务2:利用枚举类型简化程序任务3:用typedef声明类型别名,提高编程效率教学材料(1)教材:朱琨C语言程序设计,机械工业出版社,978-7-111-66954-8, 2021(2)教学资源:电子教案、教学课件、微课视频、在线开放课程(3)仪器与设备:电脑(装有VC+开发环境)12C语言程序设计教案 第6单元第3次课教学进度设计步骤教学内容及目标思政元素教师活动学生活动时间.一、复习与 导入复习:已学过的构造类型(数组、 结构体)。导入:另外两种构造类型(共用体 类型和枚举类型)。学而时习 之提问、导入新 课、布置学习任 务总结、回答、 明确学习任务5m i n二、实施任 务1:利用 共用体类 型节省内 存空间1、共用体类型的概念和声明方法2、定义共用体类型变量的3种方法3、共用体变量的引用方法4、结构体与共用体的比较5、共用体变量的赋值知识迁移 与运用,分 时享用、厉 行节约引导学生对比 结构体类型学 习共用体类型对比结构体类 型学习共用体 类型30m i n三、实施任 务2:熟悉 枚举类型1、枚举类型的概念和声明方法 关键字enum、枚举常量2、枚举型变量的定义方法和赋值学以致用讲解,引导学生 对比结构体类 型学习共用体 类型听讲,对比结 构体类型学习 共用体类型20m i n四、实施任 务3 :用 typedef 声 明类型别 名,提高编 程效率1、用“简单且见名知意”的类型别 名替代己有的类型名2、几点说明(1)用typedef声明一个类型别名 的方法(2) typedef声明类型别名,并没有 创造新的类型(3) typedef 与#(1©行11。的比较(4)提高编程效率善于总结 方法、运用 方法,精益 求精讲解,引导学生 通过实例总结 用typedef声明 一个类型别名 的方法并加以 应用听讲,总结用 typedef 声明 一个类型别名 的方法并加以 应用30m i n五、总结概括基本内容,归纳重点内容自主学习引导学生归纳 总结,然后布置 课后任务思考,记录, 整理场地5m i n作业通过教材、PPT和在线课程,复习巩固本次课内容;完成教材相应习题(可穿插到上述任务 中);预习下次课内容(链表及其操作)。后会 课体1.对于共用体类型,引导学生对比结构体类型学习,学生易理解,同时引导学生注意它们 的区别。使用共用同类型,隐含着“分时享用、厉行节约”之道理。2,通过布置的课后作业,可激发学生的求知欲,使学生学以致用。3.将传统的说法“用typedef声明新类型名”统一改为“用typedef声明类型别名”,更为 确切,更易让学生理解其作用。13C语言程序设计教案 第6单元第4次课共用体类型、枚举类型、用typedef声明类型别名教学详案步骤一:复习与导入(时间:5分钟)复习:已学过的构造类型(数组、结构体)。导入:另外两种构造类型(共用体类型和枚举类型)。步骤二:任务1:利用共用体类型节省内存空间(时间:30分钟)1、共用体类型的概念和声明方法将变量c、i、j放在同一地址2000开始的内存单元中。使多个不同的变量共用一段内存 的结构,称为“共用体”(分时享用、厉行节约)。声明共用体类型的一般形式:2、定义共用体类型变量的3种方法union UDatachar c;short i;int j;成员c成员i成员j);(1)先声明共用体类型 再定义共用体变量 union UData(2)在声明共用体类型的同时定义共用体变量 union UData(3)不指定共用体名而 直接定义共用体变量unionchar c;short i;int j;);union UData dl,(12, <13;char c;short i;int j;dl,d2,d3;char c;short i;int j;(11,(12,(13;3、共用体变量的引用方法共用体变量名.成员名引用共用体变量成员的形式:例如,dl.c、dl.i、dl.j分别表示引用共用体变量dl的3个成员。4、结构体与共用体的比较结构体变量:所有成员共存,所占内存长度是各成员长度之和。共用体变量:各个成员互斥,在任何时刻只能使用其中的一个成员。所占内存长度是最 长成员的长度。如共用体变量dl占4个字节(成员j的长度)。共用体变量的地址和各成员的地址是相同。&dl和&dLi、&dl.c、&dl.j相同。5、共用体变量的赋值(1)共用体变量的初始化赋值定义变量时,只能对变量的一个成员赋初值,而不能对所有的成员赋初值。例如:union UData dl = 尔;尔赋给变量dl的第1个成员cunion UData dl = 12, 345; 错误,中只能有一个值union UData dl =错误,初值必须用 括起来(2)共用体变量在程序中赋值定义了共用体变量以后,只能对其成员赋值,不可对其整体赋值。同类型的共用体变量 可以相互赋值。14C语言程序设计教案 第6单元第4次课例如:union UData dl, d2,d10;定义共用体类型的变量、数组dl = 12,345;dl.i=12;d2=dl;dl = 12,345;dl.i=12;d2=dl;错误,不能对变量整体赋值将12赋给dl的成员i同类型的共用体变量相互赋值dO.c ="将"赋给d0的成员c【学习检验】教材单元练习第9、10、11题。【学以致用】(1)教材例6.9:利用共用体类型测试CPU的大端、小端模式。(2)教材例6.10:设计教师与学生通用的表格。步骤三:任务2:熟悉枚举类型(时间:20分钟).1、枚举类型的概念和声明方法在实际应用中,如果一个变量只有几种可能的取值,例如一星期只有7天,那么该变 量可定义为“枚举(enumeration)类型”。“枚举”是指将变量的值一一列举出来,变量的值仅限于列举值的范围内。声明枚举类型:enum Weekday Sun, Mon, Tue, Wed, Thu, Fri, Sat;花括号中的Sun、Mon、Sat称为枚举元素或枚举常量。注意:枚举常量之间是用逗号间隔,而不是分号。定义枚举变量:2、枚举型变量的定义方法和赋值enum Weekday workday, rcstday:枚举类型枚举变量也可以在声明枚举类型的同时,定义枚举变量:enum Weekday Sun, Mon, Tue, Wed, Thu, Fri, Sat workday, restday;或: enum Sun, Mon, Tue, Wed, Thu, Fri, Sat workday, restday;枚举变量只能取枚举声明中的某个枚举元素值:workday = Mon; restday= Sat;(1)枚举元素表中的每一个枚举元素都代表一个整数,默认值依次为0、1、2、3、。在上述声明中,Sun=0, Mon=L ,Sat=6o若人为地指定枚举元素的数值:enum WeekdaySun=7, Mon=l, Tue, Wed, Thu, Fri, Sat; 则:枚举元素Sun=7, Mon=l,其后的元素按照顺序依次加1,如Fri=5。【学习检验】教材单元练习第12题。(2)只能把枚举元素赋给枚举变量,但不能把元素的数值直接赋给枚举变量。例如:workday=Mon;正确workday = 1;错误workday=(enum Weekday) 1; 正确(强制类型转换),相当于 workday二Mon;(3)枚举元素是常量,不是变量,因此不能在程序中再对它赋值。例如:enum WcckdaySun, Mon, Tuc, Wed, Thu, Fri, Sat workday;Sun=7;错误(4)在ARM嵌入式芯片头文件中,使用枚举类型实现中断向量号的编排。【布置课后作业】查找资料,查看ARM嵌入式芯片头文件中的枚举类型。15C语言程序设计教案 第6单元第4次课步骤四:任务3:用typedef声明类型别名,提高编程效率(时间:30分钟)1、用“简单且见名知意”的类型别名替代已有的类型名(1)替代基本类型typedef char int_8;typedef short int int_16;typedef unsigned char uint_8;typedef unsigned short int uint_16;用int_8代表有符号8位整型 用int_16代表有符号16位整型用uint_8代表无符号8位整型用uint_16代表无符号16位整型经过上述声明后,即可用类型别名定义变量,如:int_8 i;定义有符号8位整型变量iuint_16 j;定义无符号16位整型变量j(2)替代结构体类型typedef struct int month;iut day;int year;Date, *Date_Ptr;以上声明Date为结构体类型名,同时声明Date Ptr为指向该结构体的指针类型名。Date biilbday; 定义结构体变量birthdayDate*pl;定义结构体指针变量pl,指向此结构体类型的数据Date Ptr p2; 定义结构体指针变量p2,指向此结构体类型的数据【自主学习】教材中其他类型别名的声明。2、应用方法(1)用typedef声明一个新的类型名的方法方法步骤举例先按定义变量的方法写出定义体将变量名换成类型别名在最前面加上typedef然后就可以用类型别名定义变量short int i;short int int_16;typedef short int int_16;int_16 i;(2)用typedef只是对已经存在的类型指定一个类型别名,而没有创造新的类型。(3) #define int_16 short int 和 typedef short int int_16;区别:#define是在预编译时处理的,它只能作简单的字符串替换;而typedef是在编译 阶段处理的,并且它不是作简单的字符串替换,而是生成一个类型别名。(4)可以把所有的typedef声明单独放在一个头文件中,然后在需要用到它们的文件中 用#苗411(16命令把其头文件包含进来,以便提高编程效率(精益求精)。【学习检验】教材单元练习第13、14、15题。【布置课后作业、学以致用】下载第9单元的“基于构件化和分层的ARM嵌入式软件 工程组织”文件,查看03文件夹中ARM芯片头文件及06文件夹中common.h文件中含有 typedef的代码。步骤五:概括基本内容,归纳重点内容(时间:5分钟)1、引导学生概括本次课的基本内容,归纳重点内容(共用体类型、枚举类型的概念, 声明、变量的定义和赋值方法;typedef声明类型别名的方法,类型别名定义变量的方法)。2、作业布置:通过教材、PPT和在线课程,复习巩固本次课内容;完成教材相应习题, 学以致用;预习下次课内容(链表及其操作)。16C语言程序设计教案 第6单元第4次课C语言程序设计教学设计 日期:年月日教学内容利用链表处理一组数据教学学时2授课教师班级地点周次星期节次教学 目标素质目标知识目标能力目标(1)基本职业素养:遵守工作时间, 使用实践设备时注意用电安全,实践设 备使用完毕后要断电并放于指定位置, 程序设计要注重工程规范,养成良好的 工作习惯。(2)团结协作素养:小组内成员互查 程序代码书写规范性、准确性和完整性, 取长补短,具有责任意识、团队意识与 协作精神。(3)自主学习素养:能根据任务要求, 查找相关资料解决实际问题;能自主完 成练习,培养自主学习的意识与一丝不 苟、实事求是的工作作风。(4)思政和劳动素养:具有一定的辩 证唯物主义运用能力、安全意识、劳动 意识、创新意识、创新能力和强烈的爱 国主义精神。(1)理解数组操 作的优缺点,熟悉链 表的结构及表示方 法(2)掌握链表的 建立、输出、查找、 插入和删除等基本 操作方法(1)能用结 构体类型描述 节点的结构(2)能根据 实际需要建立 链表和对链表 进行操作教学重点(1)链表的结构及表示(2)链表建立、输出、查找、插入和删除操作方法教学难点(1)链表节点的结构体类型描述(2)链表的基本操作程序设计能力训练 任务任务1:熟悉链表的结构及表示方法任务2:掌握链表的建立、输出、查找、插入和删除等基本操作方法教学材料(1)教材:朱琨C语言程序设计,机械工业出版社,978-7-111-66954-8, 2021(2)教学资源:电子教案、教学课件、微课视频、在线开放课程(3)仪器与设备:电脑(装有VC+开发环境)17C语言程序设计教案 第6单元第4次课教学进度设计步骤教学内容及目标思政元素教师活动学生活动时间.一、复习与 导入复习:引导学生总结数组的优缺点。 优点:可非常方便地通过下标随机 访问其中的任何一个元素。缺点:1) 对数组元素的插入或删除操作不方 便,效率较低。2)当待处理的数据 个数不确定时,很难确定合适的数 组长度。导入:链表作为一种新的数据结构, 可以弥补数组存在的以上缺陷。链 表在高级嵌入式软件设计中应用非 常广泛,很有必要学习。辩证分析 和看待问 题,善于发 现问题提问、导入新 课、布置学习任 务总结、回答、 明确学习任务5m i n二、实施任 务1:熟悉 链表的结 构及表示 方法1、链表的结构(1)头指针:指1可链表头部(2)节点:数据域和指针域2、链表的简单图示:不关心每个节 点实际的存储地址3、设计结构体类型描述节点的结构抓主要问 题、活学活 用讲解,引导学生 抓住链表的主 要问题、利用已 学的结构体和 tyepdef掌握链 表节点的结构 体描述方法听讲,理解, 根据简单节点 的结构体写出 复杂节点的结 构体15mi n三、实施任 务2:熟悉 链表的建 立、输出、 查找、插入 和删除等 基本操作 方法1、尾插法建立链表的过程分析及程 序设计2、输出链表中各节点数据的过程分 析及程序设计学以致用讲解,引导学生 根据操作过程 示意图理解相 应的程序代码、 建立并输出一 个字符型链表听讲,根据操 作过程示意图 理解程序代 码,编程建立 并输出一个字 符型链表35m i n3、根据链表的结构思考按序号查找 的过程及程序设计4、根据链表的结构思考插入节点数 据的过程及程序设计5、对比链表的插入操作,根据链表 的结构思考删除节点数据的过程及 程序设计30m i n四、总结概括基本内容,归纳重点内容自主学习引导学生归纳 总结,然后布置 课后任务思考,记录, 整理场地5m i n作业通过教材、PPT和在线课程,复习巩固本次课内容;完成教材相应习题(可穿插到上述任务 中);自行完成链表操作综合应用例题程序分析、编写与运行。课后 体会1 .首先通过分析数组处理数据的优缺点分析(辩证分析和看待问题),明确为何需要学习链 表。2 .链表及其操作比较抽象,要引导学生善于通过图示法理解和编程。18C语言程序设计教案 第6单元第4次课利用链表处理一组数据教学详案步骤一:复习与导入(时间:5分钟)复习:引导学生总结数组的优缺点。优点:可非常方便地通过下标随机访问其中的任何 一个元素。缺点:1)对数组元素的插入或删除操作不方便,效率较低。2)当待处理的数据 个数不确定时,很难确定合适的数组长度。导入:链表作为一种新的数据结构,可以弥补数组存在的以上缺陷。链表在高级嵌入式 软件设计中应用非常广泛,很有必要学习。步骤二:任务1:熟悉链表的结构及表示方法(时间:15分钟)1、链表的结构一个链表由头指针(head)和若干个节点组成。每个节点由数据域(存放本节点的实际 数据)和指针域(存放下一个节点的地址)两部分组成。head地址1200 地址1345地址1156 地址1368头指针用于存放第1个节点的地址,指向第1个节点,因此可通过头指针找到第1个节 点,然后再通过第1个节点找到第2个节点,依次类推,直到找到最后一个节点(其指针域 为空,不指向任何节点)。2、链表的简单图示若不关心每个节点的实际地址,而只注重各节点的逻辑关系,则可简化为:头指针用于存放第1个节点的地址,指向第1个节点,因此可通过头指针找到第1个节 点,然后再通过第1个节点找到第2个节点,依次类推,直到找到最后一个节点(其指针域 为空,不指向任何节点)。2、链表的简单图示若不关心每个节点的实际地址,而只注重各节点的逻辑关系,则可简化为:head 数据A数据B数据C数据DA3、设计结构体类型描述节点的结构可以设计一个结构体类型来描述节点的结构:3、设计结构体类型描述节点的结构可以设计一个结构体类型来描述节点的结构:typedef char DataType; typedef struct Node (DataType data;struct Node *next;L_Node;节点的数据域类型为DataType,这里是char型声明结构体类型节点的数据域(存放本节点的实际数据)节点的指针域(存放下一个节点的地址)步骤三:任务2:熟悉链表的建立、输出、查找、插入和删除等基本操作方法(时 间:65分钟)为了便于操作,常在链表中增加一个头节点(不存放数据)。带头节点的单向链表包括 1个头节点(。号节点)和3个数据节点(13号节点)。1、尾插法建立链表的过程分析及程序设计建立链表:从无到有,一个一个地开辟节点和输入各节点的数据,并建立起前后相链 接的关系。19教学进度设计步骤教学内容及目标思政元素教师活动学生活动时间.一、复习与 导入前面已学基本类型(整型、实型、 字符型)和一种构造类型一一数 组,数组是将相同类型的多个数据 组合在一起。在实际问题中,一组 数据往往具有不同的数据类型。例 如,在学生成绩表中,一名学生的 学号为整型、姓名为字符型、成绩 为实型,显然不能用一个数组将某 个学生的这些数据组合在一起。为 解决此类问题,用户可以建立由不 同类型(或相同类型)数据组成的 组合型数据结构一一结构体。学而时习之、 温故知新提问、导入新课、 布置学习任务总结、回 答、明确学 习任务5m i n二、实施任 务1:掌握 结构体类型 的声明方法结构体类型声明的三要素:(1)关键字struct(2)结构体名(3)成员名民主集中制、 集体与个人讲解听讲,掌握10mi n三、实施任 务2:掌握 结构体变量 的定义、初 始化和引用 方法1、定义结构体变量的3种方法2、结构体变量的初始化方法(类 似于数组的初始化方法)3、结构体变量的引用方法4、结构体变量的有关说明5、例题分析6、学以致用知识迁移, 归属感、幸福 感,学以致用对比讲解;引导 学生参照数组掌 握结构体变量的 初始化方法,类 比归属(中国.省. 市)和通过例题 掌握结构体变量 成员引用方法; 巡回指导听讲,理 解,分析、 编写和运 行教材例 题程序,完 成练习题70m i n四、总结概括基本内容,归纳重点内容自主学习引导学生归纳总 结,然后布置课 后任务思考,记 录,整理场 地5m i n作业通过教材、PPT和在线课程,复习巩固本次课内容;完成教材相应习题(可穿插到上述任务 中);预习下次课内容(结构体数组、结构体指针)。后会 课体1 .结构体常用于网络通信数据包的数据组织,类似于民主集中制、集体与个人的关系。2 .结构体变量的初始化方法类似于一维数组的初始化方法,通过知识迂移,学生很容易 掌握。3 .结构体变量成员的引用方法中的“结构体变量名,成员名”蕴含着“归属感”,引导学 生为身处伟大的社会主义祖国而幸福。4,通过布置的练习题,激发学生学习兴趣,达到学以致用之目的。C语言程序设计教案 第6单元第4次课“尾插法”建立单向链表的过程(见PPT动画),其特点:头节点的指针域始终指向第 1个数据节点,新增节点链接到原链表的尾部。插入字符c的详细过程分析(见PPT动画)【总结】需要设定3个指针:头指针head、尾节点指针e、新增节点指针p【实现代码】L_Node * CreatList_2() ( char ch;定义字符变量L Node *head. *p: *e;定义链表节点型的指针变量head=(L_Node ) malloc(sizeof(L_Node): 建立头节点 e=head;e开始时指向头节点,以后指向尾节点建立新节点建立新节点printf(”请输入链表中各节点的数据(字符,以#结束):”); vhile(ch=getchar( )!= *#*) ( 从键盘输入字符,开辟一个个节点,当输入寸,结束p=(L_Node ) malloc(sizeof(L_Node):p->data=ch: e>>next=p;e=P;e->next=NULL;ruturn (head);给新节点的数据域赋值新节点插入链表尾部更新尾节点,使尾节点指针指向新节点将尾节点的指针域置空返回链表的头指针2、输出链表中各节点数据的过程分析及程序设计 建立链表后,可将链表中各节点的数据依次输出。head CA函数参数:链表的头指针headvoid OutputList(L_Node *head)L_Node *p:定义链表节点型指针变量p=head->next;从第1个节点开始输出while(p!=NULL) 判断p是否指向空 printf("%cn:p->data);将节点的数据输出p=p->next;/p指向下一个节点)printf(f, nM);3、根据链表的结构思考按序号查找的过程及程序设计从链表的第1个节点开始,逐个节点进行搜索,直到搜索到指定节点值为止。在搜索过 程中,如果找到指定节点,则返回指定节点的地址;当扫描到最后一个节点,仍找不到指定 节点值时,则返回NULL。下图所示的链表,包含1个头节点(0号节点)和4个数据节点(1号4号节点)。abCdA2020C语言程序设计教案 第6单元第4次课函数参数:链表的头指针head、待查找节点的序号i函数返回:查找成功,返回待查找节点的地址;否则,返回NULLL_Node FindNode_l( L_Node *head. int i) (LNode *p=head;从头节点开始扫描intj=O:/j记录已扫描的数据节点个数vhile(p->next!=NULL&&j<i) 逐个扫描,搜索节点 p=p->next:移动到下一个节点jH;扫描计数器加1if(j=i) return (p);节点被找到,返回节点的地址else retxini (NULL); 节点未找到,返回NULL4、根据链表的结构思考插入节点数据的过程及程序设计在第3个位置(第2个位置后)上插入给定节点值x的运算过程(见PPT动画)。函数参数:链表的头指针head、括'位量i、待指节点的隹x 函数返回:指成功,返回1;否则返回0int ListInsert(L_Node *head. inti. DataType x)L-Node *p;/ p用于指向待插位置的前一个节点L Node *s;s用于指向待插节点p=FindNodjl(head,il); 调用节点查找函数,查找第il个节点if(p=NULL)return (0);查找失败,返回0s=(L_Node *)malloc(sizeof(L_Node); /建立新节点s->data=x:s->next=p->next;p->next=s;return (1);s->data=x:s->next=p->next;p->next=s;return (1);将待插数据放入新节点的数据域将待插节点链接其后继节点/将待插节点链接其前趋节点插入成功,返回15、对比链表的插入操作,根据链表的结构思考删除节点数据的过程及程序设计 删除第2个节点(第1个位置后)的运算过程(见PPT动画)。函数参数:链表的头指针head、待删除节点的位二i 函数返回:删除成功,返回1;否则返回0 int ListDelete(L_Node *head, int i)L_Node *p;/p用于指向待删除节点位置的前一个节点L Node *s;/s用于指向待删除的节点 p=FiiidNode_l(head,i-1); 调用节点查找函数,查找第il个节点iRp XULL|p->next=NULL) 未找到第i-1个节点或第i个节点不存在return (0); s=p->next;p->next=s->next;fiee(s);return (1);删除失败,返回0/s指向待删除节点将待删除节点的前趋节点和后继节点相链接释放删除节点的空间删除成功,返回121C语言程序设计教案 第6单元第4次课【学习检验】教材第7章练习:17题。【课后学以致用】链表操作综合应用;教材第7章练习25、26题。步骤四:概括基本内容,归纳重点内容(时间:5分钟)1、引导学生概括本次课的基本内容,归纳重点内容(为什么要学习链表、链表的概念、 链表的图示方法、链表节点的设计方法、链表的基本操作方法)。2、作业布置:通过教材、PPT和在线课程,复习巩固本次课内容;完成教材相应习题, 学以致用;自行完成链表操作综合应用例题程序分析、编写与运行。22C语言程序设计教案 第6单元第2次课声明结构体类型、利用结构体变量处理一组数据教学详案步骤一:复习与导入(时间:5分钟)前面已学基本类型(整型、实型、字符型)和一种构造类型一一数组,数组是将相同类 型的多个数据组合在一起。在实际问题中,一组数据往往具有不同的数据类型。例如,在学 生成绩表中,一名学生的学号为整型、姓名为字符型、成绩为实型,显然不能用一个数组将 某个学生的这些数据组合在一起。为解决此类问题,用户可以建立由不同类型(或相同类型) 数据组成的组合型数据结构一一结构体。步骤二:任务1: