首页 理论教育 C语言程序设计:链表的定义

C语言程序设计:链表的定义

时间:2023-10-29 理论教育 版权反馈
【摘要】:数组和链表都是最常用的数据结构。为了解决以上问题我们引入链表,它是一种能够动态进行存储分配的结构,如图8.11表示最简单的链表结构。图8.11单向链表示例图链表由头指针、若干个结点构成,最后一个结点指向空。头指针指向链表的第一个结点,第一个结点中的指针域记录下一个结点的地址,指向下一个结点,然后依次指到最后一个结点,就构成了一条链表。图8.12链表示例图

C语言程序设计:链表的定义

数组链表都是最常用的数据结构。在前面的学习中,我们使用具有固定元素个数的数组,而在处理现实问题时往往需要存储不同长度的数据,比如现有两个不同人数的班级,若要用同一个数组先后存放两个班级学生数据就必须按照人数多的班级定义数组长度,这无疑会浪费存储空间,其次数组中只能存放相同类型的数据。为了解决以上问题我们引入链表,它是一种能够动态进行存储分配的结构,如图8.11表示最简单的链表结构(单向链表)。

图8.11 单向链表示例图

链表由头指针(head)、若干个结点构成,最后一个结点指向空(NULL)。每个结点包括数据域和指针域,图中的A、B、C、D代表数据域中的内容,1024、1234、990是指针域内容。头指针指向链表的第一个结点,第一个结点中的指针域记录下一个结点的地址,指向下一个结点,然后依次指到最后一个结点,就构成了一条链表。

链表中的指针域必须利用指针变量才能实现,即一个结点中应包含一个指针变量,用它来存放下一个结点的地址,因此一个结点里面有多种数据类型,用结构体来建立链表结点是最合适的。一个结构体变量包含若干成员,这些成员可以是不同类型,其中指针类型成员来存放下一个结点的地址。例如定义这样一个结构体类型:

struct Student

 int num;

 float score;(www.xing528.com)

 struct Student*next;

其中num和score存放的是结点中的有效数据,next是定义的指向结构体变量的指针,用这种方法建立的链表如图8.12所示,图中每一个结点都是struct Student类型,它的成员next用来存放下一个结点的地址。

图8.12 链表示例图

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

我要反馈