1、 描述顺序存储结构的三个特性
(1)存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置。
(2)线性表最大存储容量:数组长度maxsize。
(3)线性表的当前长度。
2、 数据长度和线性表长度的区别
数组的长度是存放线性表的存储空间的长度,存储分配后这个量一般是不变的。
线性表的长度是线性表中数据元素的个数,随着线性表插入和删除操作的进行,这个量是变化的。
3、 线性表顺序结构的优缺点
优点:
(1)无须为表示表中元素之间的逻辑关系而增加额外的存储空间。
(2)可以快速的存取表中任一位置的元素。
缺点:
(1)插入和删除操作需要移动大量的元素。
(2)当线性表长度变化较大时,难以确定存储空间的容量。
(3)造成存储空间的“碎片”。
4、 顺序表的特点
(1)长度固定,必须在分配内存之前确定数组的长度。
(2)存储空间连续,即允许元素的随机访问。
(3)存储密度大,内存中存储的全部是数据元素。
(4)要访问特定元素,可以使用索引访问,时间复杂度为 O(1)O(1)。
(5)要想在顺序表中插入或删除一个元素,都涉及到之后所有元素的移动,因此时间复杂度为 O(n)O(n)。
5、线性表与链表的区别
(1)从逻辑结构角度来看
数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。
链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项)。
(2)从内存存储角度来看
(静态)数组从栈中分配空间, 对于程序员方便快速,但自由度小。
链表从堆中分配空间, 自由度大但申请管理比较麻烦。