线性表:零个或多个数据元素的有限序列。
注:首先它是一个序列,即元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他元素都有且仅有一个前驱和后继。并且是有限的。
一.线性表的顺序存储结构
描述线性存储结构需要的三个属性:
存储空间的起始位置,线性表的最大存储容量,线性表当前长度。
线性表存储的优缺点:
优点:a.无需为表示表中元素之间的逻辑关系而增加额外的存储空间。
b.可以快速地存取表中任一位置的元素。
缺点:a.插入和删除操作需要移动大量元素。
b.当线性表长度变化较大时,难以确定存储空间的容量。
c.造成存储空间的“碎片”。
二.线性表的链式存储结构
头指针与头结点的异同:
头指针:a.是指向链表指向的第一个结点的指针,若链表有头结点,则是指向头结点的指针。
b.具有标志作用,所以常用头指针冠以链表的名字
c.无论链表是否为空,头指针都不为空,头指针是链表的必要元素。
头结点:a.是为了操作的统一和方便而设立的,放在第一元素的结点之前,其数据域一般无意义。
b.有了头结点,对在第一元素结点前插入结点和删除第一结点,其操作就与操作其它结点的操作统一了。
c.头结点不是链表必需要素。
三.单链表结构与顺序存储结构的优缺点
存储分配方式:顺序存储一般用一段连续的存储单元依次存储线性表的数据元素。
单链表用一组任意的存储单元存放线性表的元素。
时间性能:a.查找:顺序O(1)单链表O(n)
b.插入和删除:顺序O(n)单链表O(1)
空间性能:顺序需要预分配存储空间,分大了,浪费,分小了易发生上溢。
单链表不需要分配存储空间,只要有就可以分配,元素个数也不受限制。