线性表之顺序表

插入操作

顺序表插入

bool ListInsert(Sqlist &L,int i,ElemType e){
    if(i<1||i>L.length+1)//判断i的范围是否有效 
    return false;
    if(L.length>=MaxSize)//判断表的存储空间是否已满
    return false;
    for(int j=L.length;j>=i;j--){
        //将i后的元素往后移动
        L.data[j]=L.data[j-1]; 
    } 
    L.data[i-1]=e;//将元素e插入i位置 
    L.length++;
    return true; 
}

删除操作

顺序表删除

bool ListDelete(Sqlist &L,int i,ElemType e){
    //本算法实现删除顺序表中第i个元素 
    if(i<1||i>L.length+1)//判断i的范围是否有效 
    return false;
    e=L.data[i-1];//将被删除的元素赋值给e 
    for(int j=i;j<length;j++){
        //将i后的元素往后移动
        L.data[j-1]=L.data[j]; 
    } 
    L.length--;
    return true; 
}

按值查找

int LocateElem(Sqlist L,ElemType e){
    //本算法实现查找顺序表里值为e的元素,成功返回位值,否则返回0
    int i;
    for(i=0;i<L.length;i++){
        if(L.data[i]==e)//下标为i的的元素为e,返回其位序i+1 
        return i+1;
    } 
    return 0;
} 

时间复杂度

顺序表插入操作删除操作按值查找(顺序)
位置移动次数时间复杂度位置移动次数时间复杂度位置查找次数时间复杂度
最好情况表尾0O(1)表尾0O(1)表头1O(1)
最坏情况表头nO(n)表头n-1O(n)表尾nO(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个元素移动(比较)的次数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值