单链表是一种线性数据结构,与顺序表占据一段连续的内存空间不同,链表是用一组地址任意的存储单元来存储数据,每个存储单元分散在内存的任意地址上,存储单元之间用指针连接。在链表中,每个数据元素都存放到链表的一个结点 ,结点之间由指针串联在一起,这样就形成了一条如同“链”的结构,故称作链表。
通过下面的代码可定义一个单链表:
typedef struct node{
ElemType data; //数据域
struct node * next; //指针域
} LNode,*LinkList;
其实上面这段代码定义的是一个单链表的结点。每一个结点包括两部分:数据域和指针域。其中数据域用来存放数据元素本身的信息,指针域用来存放后继结点的地址。
上面使用typedef将结构体struct node定义为LNode类型,表示链表中每个结点的类型为LNode,它等价于结构体类型struct node。另外,*LinkList是指向LNode类型的指针类型,当定义一个指向LNode类型数据的指针变量时,LNode *L与LinkList L是等价的。
一个链表只要得到了头指针就可以操作链表上的每一个结点,因此把LinkList类型抽象地看作是单链表类型。也就是说,只要得到了LinkList类型的链表头结点指针,就可以操作整个单链表。
单链表的操作包括单链表的创建、结点插入、删除、链表销毁等,下以的实例就包括了这些方面的操作。
先看运行效果:
代码: