用户建立的数据类型.ppt

上传人:小飞机 文档编号:4987289 上传时间:2023-05-27 格式:PPT 页数:15 大小:234.50KB
返回 下载 相关 举报
用户建立的数据类型.ppt_第1页
第1页 / 共15页
用户建立的数据类型.ppt_第2页
第2页 / 共15页
用户建立的数据类型.ppt_第3页
第3页 / 共15页
用户建立的数据类型.ppt_第4页
第4页 / 共15页
用户建立的数据类型.ppt_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《用户建立的数据类型.ppt》由会员分享,可在线阅读,更多相关《用户建立的数据类型.ppt(15页珍藏版)》请在三一办公上搜索。

1、,第9章,用户建立的数据类型,9.4 用指针处理链表,9.4.1 链表概述 链表是一种常见的重要的数据结构,是动态地进行存储分配的一种结构。链表的组成:头指针:存放一个地址,该地址指向一个元素 结点:用户需要的实际数据和链接节点的指针,图11-10,用结构体建立链表的结点(例):struct student int num;float score;struct student*next;;其中成员num和score用来存放结点中的有用数据(用户需要用到的数据),next是指针类型的成员,它指向struct student类型数据。,图9-11,9.4.2 建立简单的静态链表,例 9.7 建立有

2、3个结点的简单链表,并输出各结点中的数据.,#include#define NULL 0 struct student int num;float score;struct student*next;void main(),struct student a,b,c,*head,*p;,p=head;,a.num=99101;a.score=89.5;b.num=99103;b.score=90;c.num=99107;c.score=85;,head=,do printf(%d%5.1fn,p-num,p-score);p=p-next;while(p!=NULL);,9.4.3 建立动态链表

3、,所谓建立动态链表是指在程序执行过程中从无有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。例9.8 写一函数建立一个有3名学生数据的单向动态链表。,建立链表的函数如下:#include#include#define NULL 0/令NULL代表,用它表示“空地址#define LEN sizeof(struct student)/令LEN代表struct/student类型数据的长度 struct student int num;float score;struct student*next;int n;/n为全局变量,本文件模块中各函数均可使用它,struc

4、t student*creat()struct student*head,*p1,*p2;n=0;p1=p2=(struct student*)malloc(LEN);scanf(“%d%f”,head=NULL;while(p1-num!=0)/学号为0建链表结束 n=n+1;if(n=1)head=p1;else p2-next=p1;/前后结点连接起来 p2=p1;p1=(struct student*)malloc(LEN);/新结点 scanf(“%d%f”,p2-next=NULL;return(head);,NULL,9.4.4 输出链表,首先要知道链表第一个结点的地址,也就是要

5、知道head的值。然后设一个指针变量p,先指向第一个结点,输出所指的结点,然后使后移一个结点,再输出,直到链表的尾结点。,例19 编写一个输出链表的函数print.void print(struct student*head)struct student*p;printf(nNow,These%d records are:n,n);p=head;if(head!=NULL)do printf(%ld%5.1fn,p-num,p-score);p=p-next;while(p!=NULL);,9.5 共用体,9.5.1.什么是共用体 使几个不同的变量共占同一段内存的结构称为“共用体”类型的结构。

6、一般形式为:,union共用体名 成员表列 变量表列;,例如:union data union data int i;int i;char ch;或 char ch;float f;float f;a,b,c;union data a,b,c;,变量a的存储示意图:,共用体和结构体的比较:结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。共用体变量所占的内存长度等于最长的成员的长度。,例如:上面定义的“共用体”变量、各占个字节(因为一个实型变量占个字节),而不是各占个字节。,2.共用体变量的引用方式 只能引用共用体变量中的成员:,例如:前面定义了a、b、c为共用

7、体变量 a.i(引用共用体变量中的整型变量)a.ch(引用共用体变量中的字符变量)a.f(引用共用体变量中的实型变量),3.共用体类型数据的特点(P271)(1)同一个内存段可以用来存放几种不同类型的成员,但在每一瞬时只能存放其中一种,而不是同时存放几种。(2)共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。共用体变量的地址和它的各成员的地址都是同一地址。不能对共用体变量名赋值,不能把共用体变量作为函数参数,共用体类型可以出现在结构体类型定义中,也可以定义共用体数组。反之,,例9.10 设有若干个人员的数据,其中有学生和教师。学生的数据中包括:姓名、号码

8、、性别、职业、班级。教师的数据包括:姓名、号码、性别、职业、职务。可以看出,学生和教师所包含的数据是不同的。现要求把它们放在同一表格中。,9.6 枚举类型,枚举:将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。声明枚举类型用enum,例如,下面是定义名为weekday的枚举类型:enum weekdaysun,mon,tue,wed,thu,fri,sat;定义枚举类型的变量:enum weekday workday,week-day;或:enum weekday sun,mon,tue,wed,thu,fri,sat workday,week-day;则workday,week-day的变量值只能是sun到sat之一。,9.7 用typedef 命名类型,用typedef声明新的类型名来代替已有的类型名。例1.声明INTEGER为整型 typedef int INTEGER例2.声明结构类型 typedef struct int month;int day;int year;DATE;从而可以这样定义变量:INTEGER i,j;DATE birthday,*p;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号