您的位置:首页 > 理论基础 > 数据结构算法

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

2017-12-19 17:15 381 查看
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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: