- 1
- 0
- 约1.62万字
- 约 40页
- 2019-08-29 发布于广东
- 举报
第九章 结构体与共用体 9.1 结构体 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体-------自定义数据类型 结构体类型定义 9.2.2 结构体变量的定义 先定义结构体类型,再定义结构体变量 一般形式: 定义结构体类型的同时定义结构体变量 一般形式: 9.2.3 结构体变量的引用 引用规则 结构体变量不能整体引用,只能引用变量成员 9.2.4 结构体变量的初始化 形式一: 9.3 结构体数组 结构体数组的定义 三种形式: 结构体数组初始化 9.4 结构体和指针 指向结构体变量的指针 定义形式:struct 结构体名 *结构体指针名; 例 struct student *p; 指向结构体数组的指针 9.5.1 动态存储分配和链表的概念 动态存储分配: 简单的链表: 用c语言实现链表结构: 包含指针项的结构体就是一个结点。 例 建立一个简单链表 9.5.2 用于动态链表的函数 C标准函数库中动态存储分配的函数: malloc( ) calloc( ) calloc函数: 链表应用 链表的特点: 例 建立一个链表存放学生信息--建立链表 #define LEN sizeof (struct stu) struct stu { int num; int age; struct stu *next; }; struct stu *creat(int n) { struct stu *head,*pf,*pb; int i; for(i=0;in;i++) { pb=( struct stu *) malloc(LEN); printf(input Number and Age\n); scanf(%d%d,pb-num,pb-age); if(i==0) pf=head=pb; else pf-next=pb; pb-next=NULL; pf=pb; } return(head); } 例 查找与输出链表中的数据 struct stu * search (struct stu *head , int n) { struct stu *p; int i; p=head; while (p-num!=n p-next!=NULL) p=p-next; /* 不是要找的结点后移一步*/ if (p-num==n) return (p); if (p-num!=n p-next==NULL) printf (Node %d has not been found!\n, n); } 例在链表中插入一个结点 struct stu * insert (struct stu * head , struct stu *pi) { struct stu *pf , *pb; pb=head; if (head==NULL) /*空表插入*/ { head=pi; pi-next=NULL; } else { while((pi-numpb-num)(pb-next!=NULL)) { pf = pb; pb = pb-next; } /*找插入位置*/ 例从链表中删除一个结点 struct stu * delete(struct stu * head ,int num) { struct stu *pf,*pb; if(head==NULL) /*如为空表, 输出提示信息*/ { printf(\nempty list!\n); goto end; } pb =head; while (pb-num!=num pb-next!=NULL) /*当不是要删除的结点,而且也不是最后一个结点时,继续循环*/ { pf = pb ; pb = pb-next; } /*pf指向当前结点,pb指向下一结点*/ 9.6 共用体 构造数据类型,也叫联合体 用途:使几个不同类型的变量共占一段内存(相互覆盖) 共用体类型定义 定义形式: 9.7 枚举类型 1.枚举类型的定义 enum 枚举类型名 {取值表}; 例如,enum weekdays {Sun,Mon,Tue,Wed,Thu,Fri,Sat}; 2.枚举变量的定义──与结构变量类似 (1)间接定义 例如,enum weekdays workday; (2)直接定义 例如,enum [weekdays] {Sun,Mon,Tue,Wed,Thu,Fri,Sat } workday; 3.说明 (1)枚举型仅适应于取值有限的数
原创力文档

文档评论(0)