插入操作

bool ListInsert(Sqlist &L,int i,ElemType e){
if(i<1||i>L.length+1)
return false;
if(L.length>=MaxSize)
return false;
for(int j=L.length;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+1)
return false;
e=L.data[i-1];
for(int j=i;j<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;
}
时间复杂度
顺序表 | 插入操作 | 删除操作 | 按值查找(顺序) |
---|
位置 | 移动次数 | 时间复杂度 | 位置 | 移动次数 | 时间复杂度 | 位置 | 查找次数 | 时间复杂度 |
最好情况 | 表尾 | 0 | O(1) | 表尾 | 0 | O(1) | 表头 | 1 | O(1) |
最坏情况 | 表头 | n | O(n) | 表头 | n-1 | O(n) | 表尾 | n | O(n) |
平均情况 | 任意(p=1/n+1) | n/2(E:n-i+1) | O(n) | 任意(p=1/n) | n-1/2(E:n-i) | O(n) | 任意(p=1/n) | n+1/2(E:i) | O(n) |
*[E]: 第i个元素移动(比较)的次数