リニアテーブル順記憶構造


//【  :               ,      ,              ,           ,              !         !】

#include 

#define MAXSIZE 20 //    
#define TRUE 1
#define FALSE 0

typedef int ElemType; //Status  bool  ,           , TRUE,FALSE
typedef int Status; // ElemType          ,     int 

typedef struct  //       
{
    ElemType data[MAXSIZE];
    int length; //    
}SeqList;

Status GetElem(SeqList L, int i, ElemType* e)// i         e
{
    if(i<=0||i> L.length)//  i          
        return FALSE;
    *e = L.data[i - 1];
    return TRUE;
}

Status ListInsert(SeqList* L, int i, ElemType e)// i    e
{
    int k;
    if (L->length == MAXSIZE)
    {
        return FALSE;
    }
    if (i <= 0 || i > L->length + 1)//  i          (1     +1       ,         )
    {
        return FALSE;
    }
    for (k = L->length;k >= i;k--)//                      i
    {
        L->data[k] = L->data[k-1];
    }

    L->data[i-1] = e;//       ,           ,i-1      
    ++ L->length;//          1
    return TRUE;
}

Status ListDelete(SeqList* L, int i, ElemType *e)//   i     ,  e    
{
    int k;
    if(L->length == 0)
        return FALSE;
    if (i < 1 || i > L->length)
        return FALSE;
    *e = L->data[i-1];
    if (i < L->length)
    {
        for(k = i;k < L->length;k ++)
        {
            L->data[k-1] = L->data[k];
        }
    }
    L->length--;
    return TRUE;

}
//Status ListInsert(SeqList* L, int i, ElemType e)
//{
//  int k;
//
//  //           ,         
//  if(L->length == MAXSIZE)
//      return FALSE;
//
//  //  i          (1     +1       ,         )
//  if (i <= 0 || i > L->length + 1)
//      return FALSE;
//
//  //             
//  for (k = L->length; k >= i; k--)
//  {
//      L->data[k] = L->data[k-1];
//  }
//
//  //       ,           ,i-1      
//  L->data[i-1] = e;
//  ++L->length; //         1
//
//  return TRUE;
//
//}

//     
Status InitList(SeqList* L)
{
    L->length = 0;
    return TRUE;
}

//              
void PrintList(SeqList L)
{
    int i;
    for(i=0; i< L.length; i++)
    {
        printf("%d\t",L.data[i]);
    }
    printf("
"
); } int main() { SeqList testList; ElemType e; InitList(&testList);// , 0 ListInsert(&testList,1,10);// 10 PrintList(testList); ListInsert(&testList,2,20);// 20 PrintList(testList); ListInsert(&testList,1,30);// 30 PrintList(testList); GetElem(testList,1,&e);// e printf(" %d
"
,e); ListDelete(&testList,2,&e); PrintList(testList); return 0; }