数据结构顺序表的基本操作

一、顺序表的插入操作

在顺序表中进行插入操作时,因为顺序表是一个有序且有长度的序列,例如在第四个和第五个之间插入一个元素,那么从五到顺序表最后一个元素依次向后移动一个位置,表长加一,顺序表的插入操作总结如下:

  1. .将第n个至第i个位置的元素顺序向后移动一个位置,为新元素空出第i个位置
  2. 将x置入空的第i个位置
  3. 表长加一
int insert_SeqList (SeqList &L,ElemType x,int i){/*定义插入操作和一个要插入的元素x和位置i*/
int k;
if(i<0||i>L.length||L.length=MAXSIZE)//如果插入位置不在表中则返回0
    return 0;
}
else{
    for(k=L.length;k>=i;k--)
        L.data [k]=L.data [k-1]//将前一个元素值给后一个
        L.data[i]=x;//将x插入到第i个元素
        L.length=Length+1;//表长加一
        return 1;
}

时间复杂度为O(n),算法如下:
插入操作时间消耗主要在移动元素上,第i个元素需要移动n-i+1个元素,而1<=i<=n,即有n+1个位置可以插入,所以假设在第i个元素前插入的概率为p,平均移动的次数为E:

             E=Σ(上 n+1,下 i=1)p(n-i+1)
             假设在线性表上任何位置插入元素是相等的概率
             p=1/(n+1)
             E=1/(n+1)Σ(上 n+1,下 i=1)p(n-i+1)=n/2

所以时间复杂度为O(n)

二、顺序表的删除操作

线性表的删除操作是将表中第i个元素从表中删掉,删除后的原表长为n-1

int Delete_SeqList (SeqList &L,int i){
int k;
if(i<0 ||i>=L.length)
    return 0;
else{
    for(k=i;k<i.lenght;k--){
        L.data[k]=L.data[k+1];
        L.length--
        
    }
    
}
}

三、顺序表的查找操作

直接按下角标进行查找

int Delete_SeqList (SeqList &L,int i){
int k;
if(i<0 ||i>=L.length)
    return 0;
else{
    for(k=i;k<i.lenght;k--){
        L.data[k]=L.data[k+1];
        L.length--
        
    }
    
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值