文档介绍:该【指针链表和共用体 】是由【明月清风】上传分享,文档一共【52】页,该文档可以免费在线阅读,需要了解更多关于【指针链表和共用体 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。主讲教师: 张常有
电话
202X
第14讲 结构体与共用体(2)--指针链表和共用体
重点
链表的概念、共用体的概念
难点
指针链表的处理
用指针处理链表
共用体
枚举类型
用typedef定义类型
主要内容
语言程序设计
01
添加标题
Add a title
02
添加标题
Add a title
(1)
1356
1249
A
B
1475
C
1021
D
NULL
head
1249
1356
1475
1021
链表概述
链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。
说明
语言程序设计
语言程序设计
链表有一个“头指针”变量,存放一个地址。该地址指向下一个元素。
链表中每一个元素称为“结点”,每个结点都应该包括两个部分:一为用户需要用的实际数据;二为下一个结点的地址。
链表中各元素在内存中可以不连续存放。要找某一元素,必须先找到上一个元素,根据它提供的下一元素地址才能找到下一元素。
链表的数据结构,必须利用指针变量才能实现。即:一个结点中应包含一个指针变量,用它存放下一结点的地址。
链表概述
(2)
建立一个简单链表,它由三个学生数据的结点组成。输出各结点中的数据。
#define NULL 0
struct student
{ long num;
float score;
struct student * next; };
main()
{ struct student a,b,c,*head,*p;
=99101; =;
=99103; =90;
=99107; =85;
建立一个简单的链表(1)
例 14-1
语言程序设计
例14-1 建立一个简单的链表(2)
head=&a;
=&b;
=&c;
=NULL;
p=head;
do
{ printf(“%ld%\n”,p->num,p->score);
p=p->next;
} while( p != NULL );
}
语言程序设计
(3)
语言程序设计
void *calloc(unsigned n,unsigned size);
其作用是在内存的动态区存储中分配n个长度为size的连续空间。函数返回一个指向分配域起始地址的指针;如分配不成功,返回NULL。
②calloc函数
①malloc函数
void *malloc(unsigned int size);
其作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的值(即“返回值”)是一个指向分配域起始地址的指针。如果此函数未能成功地执行(如内存空间不足),则返回空指针。
3处理动态链表所需的函数(1)
(4)
③ free函数
void free(void *p);
其作用是释放由p指向的内存区,使这部分内存区能被其他变量使用。p是最近一次调用calloc或malloc函数时返回的值。free函数无返回值。
(2)
语言程序设计
语言程序设计
例 14-2
建立动态链表
建立动态链表是指在程序执行过程中从无到有地建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。
(5)
语言程序设计
例14-2写一函数建立一个有3名学生数据的单向动态链表
数据结构设计:
struct student
{
long num;
float score;
struct student * next;
};