6-2 顺序表操作集 (20分)

完整的测试代码:


//这道题中L->Last是线性表长,并不是下标
AC代码:
List MakeEmpty()
{
struct LNode *p=NULL;
p=(struct LNode *)malloc(sizeof(struct LNode));
if(p==NULL)
{
return NULL;
}
//memset(p->Data,0,sizeof(p->Data));//将p->Data全部初始化0
p->Last=0;
return p;
}
Position Find( List L, ElementType X )
{
int i;
for(i=0;i<L->Last;i++)//L->Last其实就是线性表的长度,并不是下标
{
if(L->Data[i]==X)
{
return i;
}
}
return ERROR;
}
bool Insert( List L, ElementType X, Position P )
{
int i;
if(L==NULL)//????????
{
return false;
}
else if(L->Last==MAXSIZE)//已经满了,L->Last其实就是线性表的长度,并不是下标
{
printf("FULL");
return false;
}
else if(P>L->Last||P<0)//位置非法
{
printf("ILLEGAL POSITION");
return false;
}
else//位置合法,插入
{
for(i=L->Last;i>P;i--)
{
L->Data[i]=L->Data[i-1];
}
L->Data[P]=X;//插入
L->Last++;
return true;
}
}
bool Delete( List L, Position P )
{
int i;
if(L==NULL)
{
return false;
}
else if(P<0||P>=L->Last)//删除位置非法
{
printf("POSITION %d EMPTY",P);
return false;
}
else//删除位置合法
{
for(i=P;i<L->Last;i++)
{
L->Data[i]=L->Data[i+1];
}
L->Last--;
return true;
}
}

浙公网安备 33010602011771号