线性表是数据结构重要的一种。被称为线性表一般得满足以下四个条件:
a、存在唯一的一个“第一个”元素
b、存在唯一的一个"最后一个"元素
c、存在唯一前驱(除去第一个元素)
d、存在唯一后继(除去最后一个元素)
一般由两种表示和实现。线性表示实现以及链式表示实现。
1、顺序表示与链式表示的异同
顺序表示一般都以计算机中的“物理位置”相邻来表示数据元素之间的逻辑关系。这和链式表示由很大的不同,由于链式表示采用指针指定下一个元素的位置,所以它的的数据元素知识逻辑上相邻,在计算机的物理位置上面没有一定的关系,这同时也决定了顺序表示可以随机存取,而链式表示不能随机存取的特点。
由于高级语言中的数组也有随机存取的特点,所以通常用数组来描述数据结构中的顺序表示。
2、顺序表示存储结构
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct{
int *elem; //数据元素
int length; //表长度
int listsize; //表容量
}SqList;
顺序表示方式涉及的算法主要是插入和删除
插入:在第i个元素之前插入数据
a、判断插入点是否合法
b、判断容量是否已经满,如果满了,则重新分配内存
c、检查是否分配成功
d、插入数据,移动位置
删除:删除顺序线性表中的第i个元素
a、判断删除位置是否合法
b、定位到第i个元素
c、将i之后的元素向前移位,并修改表的长度(注意:如果需要记录删除的元素,需要在循环移位之前记录下它的值)