链表概述
链表是一种常见的数据结构,其存储元素的个数是不固定的。在链表中有一个头指针变量表示头指针,该指针变量保存一个地址,头指针指向一个变量,这个变量称之为元素。在链表中,每个元素包含数据部分和指针部分。最后一个元素的指针指向NULL,表示指向的地址为空。设计一个链表的节点表示如下:
struct XXX
{
//函数体
struct XXX* pNext;
};
创建动态链表
动态创建一个链表节点时要为其分配内存,使用malloc函数。函数原型如下:
void *malloc(unsigned int size);
该函数的作用是在内存中动态分配size大小的额内存空间,malloc函数返回一个指针,指向分配的内存空间,出错则返回NULL
。
calloc函数
void* calloc(unsigned n, unsigned size);
该函数的功能是在内存中动态分配n个长度为size的连续内存空间。calloc函数会返回一个指针,该指针指向动态分配的连续内存空间地址。当分配空间错误时返回NULL。
free函数
函数原型如下:
void free(void *ptr);
该函数的功能是使用由指针 ptr 指向的内存区,使部分内存区能被其他变量使用。ptr是最近一次调用calloc或malloc函数时返回的值。free函数无返回值。
动态链表创建实例
在程序运行过程中从无到有的建立起一个链表,即一个一个地分配结点的内存空间,然后输入节点中的数据并建立结点间的相连关系。
例如,将一个班级中的学生作为链表中的结点,然后将所有学生的信息放在链表结构中。
首先创建结点结构,表示每一个学生。
struct