- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章结构体与共用体分析
课程名称:计算机语言 教学目的与要求: 掌握程序的基本结构 了解C语句概述 熟记数据的输入及输出函数的一般格式,并能编写简单的顺序结构程序。 教学手段: 多媒体课件为主,辅以黑板板书 教学内容、重点、难点及作业详见课件 第9章 结构体和共用体 9.1 结构体 9.2 结构体类型数组 9.3 指向结构体的指针 9.4 结构体和函数 9.5 共用体 9.6 枚举类型 9.7 用typedef进行类型定义 9.8 综合实例 简单链表 9.5 共用体 构造数据类型,也叫联合体 用途:使几个不同类型的变量共占一段内存(相互覆盖) 共用体类型定义 定义形式: 10.3 共用体变量的应用 例:将30个学生或教师的输入并显示 9.6 枚举 问题导入:如果一个变量的取值范围有限,可以定义为枚举类型。 枚举类型的一般定义形式为: enum 枚举类型名{取值1,取值2,…,取值n}; 说明: {}中的值称为枚举元素或枚举常量,C在编译时按定义的顺序使他们的值分别为0、1、2等,依次加1,也可以在定义枚举类型的同时为其中的枚举常量赋值。 9.6 枚举 枚举类型定义之后,就可以定义相应的枚举常量。定义形式为: enum 枚举类型名 枚举变量名; 9.8.1 链表概述 9.8.2 内存动态管理函数 1. malloc()函数 malloc()函数的原型为: void *malloc(unsigned int size); 如: long *p; p=(long *)malloc(8); 2. free()函数 free()函数的原型为: void free(void *ptr); 如:free(p); 9.8.3 链表的基本操作 1. 建立链表 例9.6 写一函数,建立一个有n名学生数据的单向链表。 #define LEN sizeof(STU) #include stdio.h #include stdlib.h typedef struct student { long num; int score; struct student *next; }STU; STU *creat(void) { STU *head,*p1,*p2; p1=p2=(STU *)malloc(LEN); head=NULL; scanf(%ld,%d ,p1-num,p1-score); while(p1-num!=0) { if(head==NULL) head=p1; else p2-next=p1; p2=p1; p1=(STU *)malloc(LEN); scanf(%ld,%d ,p1-num,p1-score); } free(p1); p2-next=NULL;return(head); } 2. 链表的输出操作 例9.7 编写一个输出链表的函数print()。 void print(STU *head) { STU *p; p=head; while(p!=NULL) { printf(%ld,%d\n,p-num,p-score); p=p-next; } } 3. 链表的插入操作 例9.8 编写一个函数insert(),向链表中插入一个结点。 STU *insert(STU *head,STU *s) { STU *p0,*p1,*p2; p1=head;p0=s; if(head==NULL) { head=p0;p0-next=NULL;return(head); } while((p1!=NULL)(s-nump1-num)) { p2=p1;p1=p1-next; } if(head==p1) { p0-next=head;head=p0; } else { p2-next=p0;p0-next=p1; } return(head); } 4. 链表的删除操作 例9.9 写一函数,删除学生链表中学号为num的结点。 STU *delete(STU *head,long num) { STU *p1,*p2; if(head==NULL) { printf(list null!\n);return(head); } p1=head; while(num!=p1-nump1-next!=NULL) { p2=p1;p1=p1-next; } if(num==p1-num) { if(p1==head) head=p1-next; e
文档评论(0)