1、定义
链表是一种数据结构,采用动态分配存储单元方式,与数组相比,有效节省存储空间。
链表都有头指针变量head , 它用于存储指向链表的第一个元素,即用于存放链表第一个元素的地址。
链表中的每一个结点都包括数据域和指针域
链表尾指针指向NULL
注:链表的访问都是通过指针变量从头结点开始
用于链表中的结点是一个结构体类型,结点格式:
struct 结构体名
{
定义数据成员;
struct 结构体名 *指针变量名 ;
}
struct student
{
int num;
float score ;
struct student *next ;
};
struct student a,*p ;
2、动态存储分配函数<stdlib.h>
(1) malloc( )函数
格式: malloc (size)
其作用是在内存的动态存储区中分配一个长度为size的连续空间。申请成功此函数的返回值是分配区域的起始地址,且返回的类型为void型,申请失败,返回NULL;
eg :
struct student *p = (struct student *)malloc(sizeof(struct student));
(struct student *) 解释:强转换为指那个地址的的类型,因为*p 为struct student 类型,故强转换为(struct student *)
(2)
free()函数
格式: free(p);
作用:释放malloc( ) 申请的空间