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

posted @ 2020-04-20 10:50  努力的薇薇啊  阅读(520)  评论(0)    收藏  举报