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;
}