前言:
数组是最简单的数据机构,也就是顺序表,特点:简单粗暴,灵活性不好(当然可以使用柔性数组来弥补这一不足)。链表的出现就是为了解决数组灵活性不够问题,但是从根本上来说,特点是一样的,都是用来存储数据。数组用得很多,下面主要介绍链表的使用。
链表分为单链表,双链表,循环链表。链表的每个元素称为一个节点(node),每个节点都包含两部分,第一部分是数据域,用来存储用户需要的数据data,第二部分是指针域,用来存储下一个节点的地址,也为称指向下一个节点的指针。 (头尾节点除外,链表的头指针指向第一个节点,链表的尾部指针域为NULL,不指向任何节点。)
链表中的每一个节点都是同一种数据类型,非常特殊的一点就是结构体内的指针域的数据类型使用了未成功定义的数据类型,这是C语言中唯一规定可以先使用后定义的数据类型,如:
struct node { int data; struct node *next; };
例如,一个存放学生学号和成绩的节点:
struct stu { int num; int score; struct stu *next; }