- 1、本文档共83页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(第十一章结构体和共用体
以下对结构体类型变量的定义中不正确的是: 11.7 用指针处理链表 用数组存放数据时,必须事先定义固定的长度,数组元素在内存中也是连续存放的,若元素个数不确定,则长度必须足够大,造成内存的浪费。 链表则不同,它根据需要开辟内存单元,链表中各数据成员在内存中可以不是连续存放的。可以用它来代替数组元素个数不确定的数组。 链表必须利用指针变量才能实现,单向链表包含一个指针,用来存放下一个结点的首地址。(双链表包含两个指针,一个用来指向它后面的结点,一个用来指向它前面的结点) 单向链表的结构形式 处理动态链表所需库函数 基本思路: 定义好所需的结构体类型,用求字节数运算符“sizeof()”求出该结构体类型数据所占用的长度。并定义三个指向结构体类型的指针head,p1,p2。 首先向系统用malloc( )函数申请一个结点的空间,并使p1指向它 输入该结点数据域的数据项,并将指针域置为空,最后将该结点接到p2所指向的结点后面。 3个指针变量head、p1和p2的说明如下: head──头指针变量,指向链表的第一个结点。 p1──指向新申请的结点。 p2──指向链表的尾结点。 输出链表 基本思路: 首先要知道已有的链表的头指针head的值 设一个指针变量p, 使p=head,即让它指向第一个结点 输出p所指向的结点的数据 使p后移一结点,即p=p-next,则p指向第二个结点 然后再输出,如此循环直到链表的尾结点 注意:head的值由实参传过来,也就是将已有的链表 的头指针传给被调用的函数 链表的删除操作 若要删除的是第一个结点 若删除的不是第一个结点 链表的插入操作 11.8 共用体 构造数据类型,也叫联合体 用途:使几个不同类型的变量共占一段内存(相互覆盖) 共用体类型定义 定义形式: 结构体与共用体 例 结构体中嵌套共用体 11.9 枚举类型 枚举类型的定义 枚举变量的定义 枚举变量的使用 typedef定义类型步骤 按定义变量方法先写出定义体 如 int i; 将变量名换成新类型名 如 int INTEGER; 最前面加typedef 如 typedef int INTEGER; 用新类型名定义变量 如 INTEGER i,j; p1 99101 89.5 99102 90 99103 85 NULL head 则将p1-next赋给head,这时第一个结点已脱离链表,链表的头指针head指向原来的第二个结点 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 99101 89.5 99102 90 99103 85 NULL head p1 p2 注意:还要考虑链表是空表(无结点)和链表中找不到要删除的结点的情况 则令 p2-next=p1-next,此时p2-next由原来指向p1指向的结点,改为指向p1-next所指的结点。也即是p1所指向的结点已被删除,不再是链表中的一部分 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. struct student * del(struct student *head,long num) { struct student *p1,*p2; if(head = = NULL){printf(“list null!\n”); return head;} p1=head; while(num!=p1-num p1-next!=NULL) { p2=p1; p1=p1-next; } if(num = = p1-num) { if(p1 = = head) head = p1-next; else p2-next = p1-next; printf(“delete:%ld\n”,num); n = n-1 ; }
文档评论(0)