链表
-
什么是链表
1)链表是一个采用动态分配存储单元方式来节省存储空间的的数据结构。
2)头指针:指向链表中的第一个元素(即用于存放链表中第一个元素的地址)。
3)结点:链表中的元素,包括了数据部分和下一个结点的地址。
4)链尾:最后一个结点(元素),它的指针成员值为null。 -
链表的相关知识
(1)由于不必须按顺序存储,链表的插入和删除操作可以达到O(1)的复杂度;
(2)链表的访问通过指针变量从头结点开始;
(3)分为单链表和双向链表、已排序和未排序的、、循环和非循环的; -
双向链表
(1)每个元素都是一个对象,每个对象有一个关键字和两个指针:next和prev;
(2) 双向链表的最后一个结点指针指向表头。 -
链表排列说明:
-
由于链表中的结点是一个结构体,并且结点中有一个成员用于指向下一个结点。所以定义作为结点的格式:
struct 结构体
{ 定义数据成员
struct 结构体名 *指针变量名;
};
例如:
struct student
{ int num;
float score;
struct student *next; //指向自己的指针,所以这是个结点链表题
};
struct student a,*p;