数据结构-线性顺序表操作

1.初始化:构造一个空的顺序表,length域为0,表示表中没有数据元素

算法如下:

SeqList SeqListInit()

{// 构造一个空的线性表L

SeqList L;

L.length= 0;

return L;

}


2.插入操作:插入位置i,即在ai前插入数据,x,则原有i-1 的位置为x,i-2 前,顺序不变,i之后的位置,顺序后移

a1,a2,……ai-1, x ,ai,……an
算法如下:利用j 将顺序表中,i-1 之后的所有元素后移,将i-1 位置赋值给x,时间复杂度 为O(n)

void SeqListInsert(SeqList L,int i,ElemType x)// i 为位置

{//在顺序表中的第i个位置插入元素x

if(L.length == MAXSIZE)

{printf(" 表满");exit(0)}

if(i<1 || i>L.length+1)

{printf("位置错");exit(0)}

for(j=L.length-1;j>=i-1;j--)

{

L.data[j+1] = L.data[j];

}

L.data[i-1] = x;

L.length ++;

}

3.删除,第i个元素,第i个元素的位置为i-1,该位置后的所有元素上移一位

a1,a2,……ai-1, ai ,ai+1……an

算法如下:时间复杂度O(n)

void SeqListDelete(SeqList L,int i)

{//删除顺序表中的第i元素

if(i<1 || i>L.length)

{print("位置非法");exit(0)}

for(j=i;j<=L.length-1;j++)

{L.data[j-1] = L.data[j];}

L.length --;

}

4.按值查找

线性表中的按值查找,依次比较两个值,相等,返回位置

算法如下:时间复杂度O(n)

int SeqListLocate(SeqList L,ElemType x)

{//在顺序表L中查询第一个与x值相等的元素,若查找成功,返回下标

i=1;

while(i <= L.length && L.data[i-1]!=x)

i++;

if(i<=L.length)

return i;

else

return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值