大学课件 第十一章结构体和共用体.pptVIP

大学课件 第十一章结构体和共用体.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  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文档。上传文档
查看更多
大学课件 第十一章结构体和共用体

大学各学科PPT课件 持续更新 欢迎收藏 第十一章 结构体与共用体 结构体的概念 11.1 结 构 体 ⒉结构变量的说明 ⑶无名结构方式说明变量 ⒊结构体变量的引用 (3)对成员变量可以像普通变量一样进行各种运算 stu2.score=stu1.score; sum=stu1.score+stu2.score; stu1.age++; (4)可以引用成员的地址,也可以引用结构体变量的地址。 scanf(“%ld”,stu1.num); printf(“%o”,stu1); 但不能用以下语句整体读入结构体变量,例如: scanf(“%ld,%s,%d,%s,%f”,stu1) 结构体变量的地址主要用作函数的参数,传递结构体变量的地址。 ⒌结构体数组 结构体数组的应用 例:对候选人得票的统计程序。设有3个候选人,每次输入一个得票的候选人的序号,要求最后输出各人得票结果。 ⒍结构体指针 举例说明指向结构体变量的指针的应用。 ⒎用结构体变量和指向结构体的指针作函数参数 11.2 链 表 链表的概念 链表是一种动态存储分配结构,通过指针相连,数据可以不连续存放。 如用数组存放数据时,必须事先定义固定的长度(即元素的个数)。如果事先难以确定元素的个数,则必须把数组定义的足够大,显然这会造成内存的浪费。链表则没有这种缺点,它根据需要开辟内存单元。 链表有一个“头指针”变量,它存放一个地址,该地址指向一个元素。链表中每个元素称为“结点”,每个结点都应包含两个部分:用户需要用的实际数据和下一个结点的地址。最后一个结点不指向其他元素,它称为“表尾”,它的地址部分放一个“NULL”,链表到此结束。 链表中各元素不是连续存放的。要找某一元素,必须要找到上一个元素,根据它所提供的下一元素的地址才能找到下一个元素。如果不提供头指针,则整个链表都无法访问。 这种链表的数据结构,必须利用指针变量才能实现,即一个结点中应包含一个指针变量,用它存放下一结点的地址。 3.处理动态链表所需的函数 上例是比较简单的,所有结点都是在程序中定义的,不是临时开辟的,也不能用完后释放,这种链表称为“静态链表”。 前面讲过,链表结构是动态生地分配存储的,即在需要时才开辟一个结点的存储单元 以便插入或追加节点,删除节点后需要释放节点占用的内存单元。C 语言提供了相应的函数。 4.建立动态链表 6.对链表的删除操作 已有一个链表,希望删除其中某个结点。 例:写一函数以删除动态链表中指定的结点。 思路: 从P指向的第一个结点开始,检查该结点中的num的值是否等于要删除的那个学号。如果是,就将该结点删除,不是,就将指针p后移一个结点,直到遇到表尾为止。 设两个指针p1,p2,p1为当前结点,p2指向刚才检查过的结点。 找到要删除的结点,又有两种情况: A.要删除的是第一个结点 B.要删除的不是第一个结点 7.对链表的插入操作(在尾部追加节点) 11.3 共用体(union) ⒊共用体与结构体的区别 11.4 枚 举 11.5 用户定义类型 思考题 大学各学科PPT课件 持续更新 欢迎收藏 删除结点的函数: struct student *del (struct student *head,long num) {struct student *p1,*p2; if (head==NULL) {printf (\nlist is null\n);} p1=head; while (p1-num!=num p1-next!=NULL) {p2=p1;p1=p1-next;} if (p1-num==num) {if (p1==head) head=p1-next; else p2-next=p1-next; printf (delete:%d\n,num); n=n-1;} else printf (%ld not been found!,num); return(head); } 实例运行 大学各学科PPT课件 持续更新 欢迎收藏 步骤: ①为新节点分配内存。 ②建立新节点的成员项。 ③建立链接关系。 大学各学科PPT课件 持续更新 欢迎收藏 在链表最后插入一个结点: struct student *Add(struct student *head) { struct student *p1, *p2,*p3; p1=head; if(head!=NULL) while(p1-next!=NULL) p1=p1-next; p2=(struct student*)malloc(sizeof(struct student)); printf(Your num:)

文档评论(0)

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

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

1亿VIP精品文档

相关文档