一、什么是线性表
线性表是具有相同数据类型的n个数据元素的有限序列。
即每个元素类型所占的空间大小相同。有次序的有限序列。
如:线性表L
L=(a₁,a₂,a₃....,ai,ai+1..,an)
除第一个元素外,每个元素有且只有一个直接前驱,除最后一个元素外,每个元素有且只有一个直接后继。a₁为a₂的直接前驱,a₃为a₂的直接后继。
二、顺序表
顺序表:
a₁ |
a₂ |
a₃ |
... |
an |
线性表的存储顺序又称顺序表。它是一组地址连续的存储单元依次存储在线性表中的数据元素。
线性表的顺序存储结构是一种随机存取的存储结构。
//线性表的描述
#define MaxSize 50 //定义线性表的最大长度 typedef struct{ Elemtype data[MaxSize]; //顺序表的元素 int length; //顺序表的当前长度 }SqList; // 顺序表的类型定义
对线性表的操作
1.插入操作:在第i(1<i<L.length)个位置插入新元素e
算法思想:
·判断在范围i内是否有效
·判断空间存储是否还有位置
·第i个元素及以后元素向后移
·在位置i处放入e
·表长+1
(线性表的位序从1开始,数组元素的下标从0开始)
2.删除元素
3.查找元素
bool
ListInsert(
SqList &
L,
int i,
ElemType e){
if(
i<
1||
i<length+
1)
//判断i的范围是否有效
return
false;
e=
L.data[i-
1];
//将删除的元素赋值给e
for(
int j=i;
j<
L.length;j++)
//将i元素及向后移
L.data[j-
1]=
L.data[j];
L.length--;
return ture;
}