11第11章结构体与共用体摘要.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11章 结构体与共用体 11.1 结构体类型的定义与变量说明 11.2 结构体类型变量引用与初始化 11.3 结构体数组 数组各元素在内存中连续存放,如右图所示。 11.4 指向结构体类型数据的指针 一、 指向结构体变量的指针 二、指向结构体数组的指针 三、用结构体变量和指向结构体的指针作函数参数 11.5 链表 二、动态分配存储空间库函数 三、对链表的基本操作 (一)、建立链表 (二)、链表的访问 (三)、链表的插入操作 (四)、链表的删除操作 11.6 共用体 11.7 枚举类型 11.8 用typedef定义类型 小 结 main() {void print(struct student *); struct student stu; stu.num=12345; strcpy(stu.name,Li Li); stu.score[0]=67.5; stu.score[1]=89; stu.score[2]=78.6; print(stu); } void print(struct student *stu) { printf(FORMAT,(*stu).num, (*stu).name, (*stu).score[0], (*stu).score[1], (*stu).score[2]); printf(\n); } 一、概述 链表存储结构是一种动态数据结构,其特点是它包含的数据对象的个数及其相互关系可以按需要改变,存储空间是程序根据需要在程序运行过程中向系统申请获得,链表也不要求逻辑上相邻的元素在物理位置上也相邻,它没有顺序存储结构所具有的弱点。 1.链表结构 (1)头指针变量head──指向链表的首结点。 (2)每个结点由2个域组成: 1)数据域──存储结点本身的信息。 2)指针域──指向后继结点的指针。 (3)尾结点的指针域置为“NULL(空)”,作为链表结束的标志 2、链表结构的定义 struct student {char name[10]; struct student *next; }; next为student类型指针变量,指向下一个结点的指针域。 结点的变量或指针变量的定义: struct student node,*head; node可以存放一个学生结点 指针head可以存放学生结点的地址。 1.malloc函数 其函数原型为 void *malloc(unsigned int size); malloc在内存的动态存储区中分配一个size长度的连续存储空间。 例如: int *p; p=(int *)malloc(8); p指示系统分配的4个整型存储单元的起始地址 也可看成包含4个数组元素的p数组:p[0],p[1],p[2],p[3] 2. calloc函数 其函数原型为 void *calloc(unsigned n,unsigned size); 其作用是在内存的动态区存储中分配n个长度为size的连续空间。函数返回一个指向分配域起始地址的指针;如果分配不成功,返回NULL。 用calloc函数可以为一维数组开辟动态存储空间,n为数组元素个数,每个元素长度为size。 3. free函数 其函数原型为 void free(void *ptr); 函数free释放由指针变量ptr所指示的内存区域。 例如:free(p); 通过函数free将已分配的内存区域交还系统,使系统可以重新对其进行分配。 例11-5 动态定义数组。 #include stdio.h void main() {int n,i,*p; printf(n=); scanf(%d,n); p=(int *)malloc(n*sizeof(int)); for(i=0;in;i++) p[i]=i*i; for(i=0;in;i++) printf(%d ,p[i]); free(p); } 程序运行结果: n=10 0 1 4 9 16 25 36 49 64 81 链表的基本操作有:创建、查找、插入、删除和修改等。 创建链表:从无到有地建立起一个链表。 查找:按给定的结点索引号或检索条件,查找某个结点。如果找到指定的结点,则称为检索成功;否则,称为检索失败。 插入:在结点ki-1与ki之间插入一个新的结点k’,使表的长度增1,且逻辑关系发生如下变化: 插入前,ki-1是ki的前驱,ki是ki-1的后继; 插入后,新插入的结点k’成为ki-1的后继、ki的前驱。 (4) 删除操作:删除结点ki,使链表

文档评论(0)

麻将 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档