C语言课程之一高级编程部分-结构体和链表

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

上嵌网院讲师:任继梅系列课程—C语言高级编程结构体和链表第一章课程目标掌握C语言自定义类型•结构体的定义和使用、共用体、链表的建立和基本操作掌握C语言的存储方式•存储类、链接、内存管理掌握线性表和常用的数据结构•线性表、存储方式、顺序表、链表、队列、栈掌握常用的查询和排序算法•顺序查询、折半查询、插入排序、选择拍寻掌握动态链接库和静态链接库课程安排第一天上午:自定义数据类型下午:链表的建立和基本操作第二天上午:数据的存储方式下午:线性表第三天上午:队列下午:栈第四天上午:查找下午:排序第五天上午:其他常用算法下午:静态链接库和动态链接库结构体是如何定义的?2.如何引用结构体成员?3.指针怎样引用结构体成员?4.什么是共用体?5.怎么样建立链表?6.如何删除链表的一个节点?本章目标结构体类型与结构体变量•结构体的类型和变量的使用•结构体成员的引用•结构体数组•结构体与函数动态数据结构——链表•链表存储结构•链表的基本操作其他自定义数据类型•共用体•枚举类型•自定义类型标识符(typedef)结构体•结构体内部资料请勿COPY6–结构体是一种构造数据类型。–结构体类型的变量可以拥有不同数据类型的成员,是不同数据类型成员的集合。–用途:把不同类型的数据组合成一个整体——自定义数据类型。结构体的声明声明结构体类型的一般形式:struct结构体名{类型标识符成员名;类型标识符成员名;…………….};成员类型可以是基本型或构造型struct关键字,不能省略合法标识符可省:无名结构体示例:定义一个可描述学生基本情况的结构体类型如下:structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];};namenumsexagescoreaddr2字节2字节20字节1字节4字节30字节……..结构体类型定义描述结构的组织形式,不分配内存{intnum;charname[20];charsex;intage;floatscore;};structstudentstu1,stu2;结构体变量的定义定义好一个结构体类型后,我们可以将其看作是和int、char、float等数据类型一样的一个新的数据类型。struct结构体名{类型标识符成员名;类型标识符成员名;…………….};struct结构体名变量名表列;1.先定义结构体类型,再定义结构体变量结构体名{类型标识符成员名;类型标识符成员名;…………….}变量名表列;例structstudent{intnum;charname[20];charsex;intage;floatscore;}stu1,stu2;{类型标识符成员名;类型标识符成员名;…………….}变量名表列;例struct{intnum;charname[20];charsex;intage;floatscore;}stu1,stu2;用无名结构体直接定义变量只能一次结构体类型与结构体变量比较‐类型:不分配内存,变量:分配内存‐类型:不能赋值、存取、运算;变量:可以‐结构体成员名与程序中变量名可相同,不会混淆‐结构体可嵌套结构体变量的引用格式‐引用规则:结构体变量不能整体引用,只能引用变量成员成员(分量)运算符优先级:1结合性:从左向右‐引用方式:结构体变量名.成员名例structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu1,stu2;stu1.num=10;stu1.score=85.5;stu1.score+=stu2.score;stu1.age++;{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu1,stu2;printf(“%d,%s,%c,%d,%f,%s\n”,stu1);()stu1={101,“WanLin”,‘M’,19,87.5,“DaLian”};(){intmonth;intday;intyear;};structperson{charname[20];charsex;structdatebirthday;};‐若有定义:structpersonperson1;‐可以这样访问person1中的成员month:person1.birthday.monthnameSexbirthdaymonthdayyear同类型结构体变量间的整体赋值结构体变量可以通过整体赋值,将一个结构体变量中的所有数据,赋给另一个结构体类型相同的结构体变量中对应的数据成员。例structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu1,stu2;stu2=stu1;结构体示例•建立一个学生的基本情况表,然后将其打印输出(structSample1.c)。内部资料请勿COPY15structstudent{intnum;charname[20];charsex;intage;floatscore;};intmain(){structstudentstu1,stu2;stu1.num=10001;strcpy(stu1.name,zhang);stu1.sex='M';stu1.age=19;stu1.score=88;stu2=stu1;printf(stu1:%d,%s,%c,%d,%6.2f\n,stu1.num,stu1.name,stu1.sex,stu1.age,stu1.score);printf(stu2:%d,%s,%c,%d,%6.2f\n,stu2.num,stu2.name,stu2.sex,stu2.age,stu2.score);}结构体名{类型标识符成员名;类型标识符成员名;…………….};struct结构体名结构体变量={初始数据};例structstudent{intnum;charname[20];charsex;intage;};structstudentstu1={112,“WangLin”,‘M’,19};在定义的时候初始化结构体变量指向结构体变量的指针的值是该结构体变量所分配的存储区域的首地址。1.结构指针变量的定义指向结构体的指针numnamesexagestupstructstudent{intnum;charname[20];charsex;intage;}stu;structstudent*p=&stu;通过指针访问结构体变量的成员结构变量中简单成员的引用形式有下面三种:①结构变量名.成员名(名字引用);②结构指针-成员名(指针引用);③(*结构指针).成员名(将指针转化为名字引用);(*结构体指针名).成员名结构体指针名--成员名结构体变量名.成员名例intn;int*p=&n;*p=10;n=10structstudentstu1;structstudent*p=&stu1;stu1.num=101;(*p).num=101结构体指针示例•编写一个时钟调试程序,并以hh:mm:ss的方式显示日期。内部资料请勿COPY19//结构体定义structDateTime{inthours;intminutes;intseconds;};voiddelay()//延时函数{longi;for(i=0;i92345678;voidgetTime(structDateTime*tt){tt-seconds++;if(tt-seconds==60){delay();//调整时间精度tt-minutes++;tt-seconds=0;}if(tt-minutes==60){tt-hours++;tt-minutes=0;}if(tt-hours==24){tt-hours=0;}}结构体指针练习•设计一个C程序,文件名struceExercise1.c,给定一个日期,求出该日为星期几(已知2014-5-1为星期四)内部资料请勿COPY20结构体数组的定义结构体数组的定义的三种形式:numnamesexagenumnamesexagestu[0]stu[1]25B形式一:structstudent{intnum;charname[20];charsex;intage;};structstudentstu[2];形式二:structstuden{intnum;charname[20];charsex;intage;}stu[2];形式三:struct{intnum;charname[20];charsex;intage;}stu[2];结构体数组的初始化,与通常数组的初始化类似例如:structstudent{intnum;charname[20];charsex;intage;};structstudentstu[]={{100,“WangLin”,‘M’,20},{101,“LiGang”,‘M’,19},{110,“LiuYan”,‘F’,19}};结构体数组的初始化和引用引用方式:结构体数组名[下标].成员名stu[1].age++;strcpy(stu[0].name,”ZhaoDa”);structstudent{intnum;charname[20];charsex;intage;}stu[3];{intnum;charname[20];charsex;intage;}stu[3]={{10101,LiLin,'M',18},{10102,ZhangFun,'M',19},{10104,WangMin,'F',20}};voidmain(){structstudent*p;for(p=stu;pstu+3;p++)printf(%d%s%c%d\n,p-num,p-name,p-

1 / 56
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功