结构与联合要点讲解.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 结构与联合 张书源 10.1 结构体类型 10.1.1 结构体类型变量的定义 10.1.2 结构体变量的使用 10.2 结构体数组的定义和引用 10.3 结构体指针的定义和引用 10.4 链表 10.4.2 链表的建立 10.4.3 输出链表 10.4.4 回收链表 10.5 联合 用指针生成动态结构体: struct date { int year; int month; int day; }; struct date *p; p=(struct date *)malloc(sizeof(struct date)); p day month year p-year p-month p-day 动态结构体用完后应释放其存储空间。 p-year=2012; p-month=12; p-day=10; printf(%d年%d月%d日\n,p-year,p-month,p-day); free(p); 由于数组的大小需预先指定,且不能更改,所以数组不适合那些数据量变化很大的场合。 链表是一种动态数据结构,它在程序执行过程中按需要生成存储空间,且可随时调整大小,提高了内存的利用率。 链表的每个结点都是结构体,数据域中存放结点的数据,指针域中存放下一个结点的地址。 head称为头指针,它存放了头结点的地址。 头结点是一个不存放数据的结点,它可以简化链表的某些操作。 最后一个结点的指针域存放NULL,表示没有后续结点。 每个结点都是用malloc()函数动态生成的。 单链表: a1 a2 a3 ^ head 头结点 链表结点的定义: struct unit { char name[20]; char tel[15]; char email[40]; struct unit *next; }; 假设有一个通讯录,则可定义以下结构体作为链表结点: 数据域 指针域 指针域必须是一个指向同类结构体的指针,用于指向下一个结构体。 a1 a2 ^ head 小李 123456789 111@163.com 小王 987654321 ttt@126.com 1、定义结点: typedef struct node { int data; struct node *next; }NODE; 2、定义头指针: NODE *head; 这时的链表称为空表。 3、生成头结点: head=(NODE *)malloc(sizeof(NODE)); head-next=NULL; ^ head 4、根据需要生成其它结点: 假设我们输入了4个整数,把它们存入链表,每个结点存一个。 10 20 30 head 40 ^ NODE *p; p=head; for(i=1;i=4;i++) { scanf(%d,x); p-next=(NODE *)malloc(sizeof(NODE)); p=p-next; p-data=x; } p-next=NULL; head x p 10 data next p 20 p 20 …… p 40 ^ ^ 10 链表是一种只能顺序访问的数据结构,每个结点都需要通过前一个结点才能访问。 通常的访问方法是用一个指针沿着链表进行移动,逐个访问各个结点。 注意:不要移动头指针,否则将导致链表结点再也无法找到。 10 20 30 head 40 ^ p=head-next; while(p!=NULL) { printf(%d ,p-data); p=p-next; } 10 20 30 head 40 ^ p p p p p NULL 当链表使用结束后,应该用free()函数回收各个结点所占的存储空间。 回收时只能一个结点一个结点的回收。 10 20 30 head 40 ^ p p p p p=head; while(p!=NULL) { head=head-next; free(p); p=head; } p p NULL head head head head head NULL 联合又称共用体,也是C语言中的一种构造类型。 与结构体相似,联合也可由不同类型的数据组成,只是一个联合的所有成员会共享存储空间。 定义联合类型: 定义方法: union 联合名 { 成员表; }; 联合的定义方法与结构体相同,只是使用union定义, 联合的成员可以是任意类型的数据。 如: union un { int x; int y; }; 联合变量的定义: 与结构体变量定义的方法相同。 union un { int x;

文档评论(0)

高考学子 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档