链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用。链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节点。链表都有一个头指针,一般以head来表示,存放的是一个地址。链表中的节点分为两类,头结点和一般节点,头结点是没有数据域的。链表中每个节点都分为两部分,一个数据域,一个是指针域。说到这里你应该就明白了,链表就如同车链子一样,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它称为“表尾”,它的地址部分放一个“NULL”(表示“空地址”),链表到此结束。
作为有强大功能的链表,对他的操作当然有许多,比如:链表的创建,修改,删除,插入,输出,排序,反序,清空链表的元素,求链表的长度等等。
1.链表的类型
1.单链表:本质上是单向的,节点遍历只能在正向进行
2.双链表:双向,节点遍历既可以向前也可以向后。 每个节点都有一个称为prev的附加指针,指向上一个节点。
3.循环链表:链表的一种变体,其中最后一个元素链接到第一个元素,形成一个循环循环。 它可以采用上述两种形式之一。 在圆形双向链表,头部指向尾部的分组指针和尾指向所述头部的下一个指针。
I
2.创建链表
typedef struct student