最近给一个小同学上C语言的课,就顺便自己再把基础知识复习一下,争取每天都写一点。
Stautus GetElem (sqlist L, int i, Stautus *e)
{
if (L.length ==0||i<1||i>L.length )
return ERROR;
*e=L.data[i-1];
return OK;
}
///插入操作;
Stautus ListInsert(sqlist* L,int i ,Stautus e)//i表示要删除的位置
{
if(L->length ==MAXSIZE)
{
return ERROR;
}
if(i>(*L).length+1||i<1)
{
return ERROR;
}
if(i<=L->length )
{
for(int k= L->length -1;k>=i-1;k--)
{ L->data [k+1]=L->data[k];}
}
L->data [i-1]=e;
L->length ++;
return OK;
}
Stautus ListDelete (sqlist * L,int i,int *e)
{
if (L->length ==0)
return ERROR;
if(i>L->length ||i<1)
return ERROR;
*e=L->data[i-1];
if(i<L->length -1)
{
for(int k=i-1;k<L->length ;k++)
L->data[k]=L->data[k+1];
}
L->length --;
return OK;
}
注意在插入和删除操作中,最后一个元素的处理,他的删除或者插入不需要移动其他的元素。最好情况是在末尾,时间复杂读是O(1)最坏情况是O(n),即在最前端,因此根据等概率计算,平均复杂度为O (n);