1.线性表的第一个表项称为表头,最后一个表项称为表尾;(线性表是线性结构的典型)
2.线性表的存储表示有两种:顺序存储和链式存储。用顺序存储方式实现的线性表称为顺序表,使用数组作为表的存储结构的。
3.线性表的存储方式有基于数组的存储表示、基于链表的存储表示、基于散列的存储表示等多种方式,基于数组的存储表示是其中最简单、最常用的一种,顺序表是线性表基于数组的存储表示。
4.顺序表的定义是:把线性表中的所有表项按照其逻辑顺序依次存储到计算机存储中指定存储位置开始的一块连续的存储空间中。
其特点是:
1)在顺序表中,各个表象的逻辑顺序与其存放的物理顺序一致,即第i个表项存储于第i个物理位置;
2)对顺序表中的所有表项,既可以进行顺序访问,也可以进行随机访问。
5.顺序表的存储方式有两种:
1)静态方式:存储数组的大小和空间事先已经固定分配,一旦数据空间占满,再加入新的数据就将产生溢出,此时存储空间不能扩充,就会导致程序停止运行;静态存储表示:
typedef int T
tpyedef struct{
T data[maxSize];//限定好了具体的大小
int n;
}
2)动态方式:存储数据的空间是程序在执行过程中通过动态存储分配的语句分配的,一旦数据空间占满,就可以再分配一块更大的存储空间以替代原先的存储空间,从而达到扩充数组空间的目的,动态存储表示:
typedef int T
tpyedef struct{
T *data;
int n;
}
操作中有一个resize操作,当原本分配的空间不够的时候,负责:1)请求新的分配;2)复制数组;3)删除老的数组;data就是一个指向数组的指针
顺序表与一维数组的差别:
一位数组只有两个操作:桉数组的下标存,按数组的下标取,这样,在一维数组中数据可能是跳跃式的、不连续存放的(换句话说,一个数组可能只有a[0]h和a[6]里面存放了有效数据,中间却没有存放);但是顺序表是不一样的,它的数据一定是紧凑排列的