编辑代码

#include <stdio.h>
#define DATATYPE1 int
#define MAXSIZE 100
typedef struct
{   DATATYPE1 data[MAXSIZE];
    int len;
}SEQUENLIST;

void INITIATE(SEQUENLIST *L)
{    L->len=0;
     return;
}

int LENGTH(SEQUENLIST *L)
{   return(L->len=0);
}

DATATYPE1 GET(SEQUENLIST *L,int i)
{   if(i<1||i>L->len)
       return(-1);
    else
       return(L->data[i-1]);
}

int LOCATE(SEQUENLIST *L,DATATYPE1 X)
{   int k;
    k=1;
    while(k<=L->len&&L->data[k-1]!=X)
    k++;
    if(k<=L->len)
        return(k);
        else
           return(0);
}

void INSERT(SEQUENLIST *L,int i,DATATYPE1 b)
{   int k;
    if (i<1||i>L->len+1||L->len>=MAXSIZE)
       printf("error");
    else
    {   for(k=L->len;k>=i;k--)
            L->data[k]=L->data[k-1];
            L->data[i-1]=b;
            L->len++;
    }
}

void DELETE(SEQUENLIST *L,int i)
{   int k;
    if(i<1||i>L->len+1||L->len==0)
       printf("error");
       else
    {     for(k=i+1;k<=L->len;k++)
          L->data[k-2]=L->data[k-1];
          L->len--;
    }
}

int EMPTY(SEQUENLIST *L)
{   if(L->len==0)
       return(1);
    else
    return(0);
}

void main()
{    SEQUENLIST list,*L;
     int i,j;
     L=&list;
     INITIATE(L);
     printf("输入线性表的元素,-99结束:\n");
     scanf("%d",&i);
     j=1;
     while(i!=-99)
     {     INSERT(L,j,i);
           j++;
           scanf("%d",&i);
    }
    for(i=1;i<=LENGTH(L);i++)
        printf("%d\t",GET(L,i));
        printf("\n输入要查找的元素值:");
        scanf("%d",&i);
        printf("该元素在线性表中的位置为:%d",LOCATE(L,i));
        i=1;
        while(!EMPTY(L))
             DELETE(L,i);
        if(EMPTY(L))
            printf("\n线性表已空!");
    }