首页 理论教育 C语言程序设计:创建动态链表教程

C语言程序设计:创建动态链表教程

时间:2023-10-20 理论教育 版权反馈
【摘要】:创建动态链表是在程序的运行过程中,一个一个地开辟结点空间和输入结点数据,并建立起结点的前后关系。创建动态链表的基本步骤如下:创建第一个结点,并保存该结点的内存地址。建立一个有3 名学生学号和成绩数据的单向链表,输入成绩为0 时,结束输入,并输出链表的所有结点信息。

C语言程序设计:创建动态链表教程

创建动态链表是在程序的运行过程中,一个一个地开辟结点空间和输入结点数据,并建立起结点的前后关系。

创建动态链表的基本步骤如下:

(1)创建第一个结点,并保存该结点的内存地址

(2)创建第二个结点,将第二个结点的地址保存在第一个结点的指针域中。

(3)以此类推,创建n 个结点。

【例10.12】建立一个有3 名学生学号和成绩数据的单向链表,输入成绩为0 时,结束输入,并输出链表的所有结点信息。

程序代码:

运行结果:

程序讲解:

在C语言中要动态开辟空间和回收空间需要使用malloc 函数和free 函数。(www.xing528.com)

函数原型及说明:

void*malloc(long NumBytes)

该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。

void free(void*FirstByte)

该函数是将之前用malloc 分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。

使用这两个函数应注意:

(1)申请了内存空间后,必须检查是否分配成功。

(2)当不需要再使用申请的内存时,记得释放;释放后应该把指向这块内存的指针指向NULL,防止程序后面不小心使用了它。

(3)虽然malloc()函数的类型是(void*),任何类型的指针都可以转换成(void*),但是最好还是在前面进行强制类型转换,如p1=(struct student*)malloc(sizeof(struct student))。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈