数据结构之线性表
线性表
线性表通过存储结构可以分为顺序表和链表,其中顺序表是顺序结构(数组)存储的线性表,链表是链式结构存储的线性表。
顺序表
顺序表是通过顺序结构存储的线性表,一般通过动态数组实现,也可以通过vector实现(vector底层是顺序表,实质为用顺序表实现顺序表)。
链表
链表中存储空间不连续。链表的最小单位为结点,结点分为数据域和指针域,存储数据信息元素的域称为数据域,存储直接后继位置的域称为指针域。n个结点链结成一个链表,链表结点中只包含一个指针域称为单链表,若结点中还有存储直接前驱位置的指针称为双向链表。
(1)链表中为什么要设立头结点?
头结点的设立为了操作的统一,统一体现在,有了头结点,对在第一元素结点前插入结点或删除第一结点,其操作就和其他结点的操作统一了。
(2)头指针和头结点的区别?
头指针是链表指向第一个结点的指针,若有头结点,则是指向头结点的指针。头指针是链表的必须要素,头结点非必须,只是为了操作统一。
空链表,是指头结点的指针域为空。一般的链表中,尾结点的指针域为空。
(3)链表实现时,如何判断链表中是否有头结点?
创建链表时,先创建头结点,结点的指针域指向NULL;遍历、添加、删除元素时,循环的索引从1开始。
单向链表,单向循环链表,双向链表,双向循环链表