hanyujianke 2020-08-18
顺序表
线性表的顺序存储
顺序表的样子:
顺序表的特点:
逻辑上顺序,在物理存储上也是顺序的,相邻的
随机访问,通过序号可以有限的时间内找到所需的元素
存储密度高,每个节点只存储数据元素
插入和删除正常需要移动很多元素
顺序表的基本操作:
插入操作图片:
代码:
//顺序表的插入操作
bool ListInsert (SqList &L, int i , ElemType e){
if(i < 1 || i >L.length +1)//判断i的范围是否合法
return false
if( L.lenth >= MaxSize)//存储空间是否满了
return false;
//开始插入元素
for(int j = L.ength;j>=i;j--){
L.data[j] = L.data[j-1];
L.data[i-1] = e;
L.length++;
return true;
}
删除操作:
代码:
//顺序表删除操作代码
bool ListDelete(SqList &L, int i ,ElemType &e){
if(i<1 || i>L.length)//判断i的范围是否合法
return false;
e = L.data[i-1];//将要删除的元素值取出来
//开始删除第i个
for(int j = i; j<=L.length; j++){
//前移
L.data[j-1] = L.data[j];
}
L.length--;
return true;
}
//按值查找
代码:
int LocateElem (SqList &L, ElemType e){
int i ;
for(i=0; i<L.length;i++){
if( L.data[i] == e){
return i+1; //输出第几个元素
}
return 0;
}