第11章 结构体和共同体.pptVIP

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
;;例如:在计算机等级考试管理系统中,每个考生都 有如下信息 :;;例如: int x; float y; char a[30]; ;11.2.2 结构体变量的定义;方法二:在定义类型时,直接说明变量。;方法三: 嵌套定义。(如果有需要的时候); 先定义类型,再用类型说明变量 在定义类型时,直接说明变量 用一个已定义的结构类型来定义另一结构类型中的成员—— 嵌套定义 都符合标识符先定义后使用的原则。;11.2.3 结构体变量的访问;一、结构体变量的初始化: ;struct s { long num; char name[20]; char sex; }student={ 97031, li ming , m } ;;二、结构变量的引用:;2、两个同类型的结构体变量可互相整体赋值。 ; 单个结构体变量没有实际的意义,可用简单变量来完成工作。仅当结构体与数组相结合时,才能解决复杂问题。 结构体数组: 用结构类型定义数组。即每个数组元素是结构类型。;二、结构体数组的引用: ;例程1:;;访问成员时,有三种表示: 结构体变量 . 成员 p?成员名 (*p). 成员名 注: *p . 成员名 错,*比 . 级别低 ;; 由于是动态地分配存储单元,使得被分配的单元是独立的,即单元之间的地址不连续,从而不能利用已学过的方法访问这些单元。可利用链表来解决上述矛盾。;一、什么是链表?;; 每个结点必须是结构变量,至少有两个成员:一个用来存放该结点的数据,另一个存放下一个结点的地址。;stu2; 1、 可动态地分配和释放存储空间。 2、 只能通过前一个结点才能找到下一个结点, 即只能顺序访问结点 ,不能象数组 那样随 机访问。; 头指针很重要,它代表链表的首地址,故不要轻易地改变。;单链表、环链表、双链表 …;11.5.2 动态内存分配与释放函数; 内存分配函数,在动态区中分配一个长度为 size的连续空间,分配成功,返回一个指向该空间首地址的指针,未成功,返回值=0。;11.5.3 链表的使用;2、给 3个指针赋初值,建立第一个结点: head = NULL ; pnew = (struct stu *)malloc(LEN) ; head = pnew ; prear = pnew ; 并给首结点各域赋值。 ;#define LEN sizeof( struct student ) #define STU struct student struct student { long num; float score; struct student ?next; }; ;建立链表 STU ?creat( ) { // 赋初值 STU ?head, ?p1, ?p2 ,int n=0; head=NULL; p1= (STU ?) malloc(LEN); scanf(%d, %f , p1?num, p1?score);; p1 = (STU ?) malloc(LEN); scanf(%ld, %f, p1?num, p1?score); };void print ( STU ?head ) { STU ?p ; p = head ; if (p = = NULL) return ; do { printf(%ld %5.1f \n, p?num, p?score) ; p = p?next ; }while (p != NULL) ; };stu2; 一般给出某一条件,当某一条件成立时,则删除该结点: ; p1 = head; while (num!=p1?num p1?next!=NULL) { p2=p1; p1=p1?next; } 寻找删除点; 一般链表中结点的关键数据按顺序输入,待插入结点的关键数据与链表中的关键数据一一比较,插入适当的位置。;步骤: 1、定义3个指针new(

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档