编辑代码

#include "stdio.h"
// #include "malloc.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);
}

DATATYPE1 GET(SEQUENLIST *L,int i)
{   if ( i<1||i>L->len)
        return(NULL);
    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||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(  SEQUENLLST  *L)
{   
    if( L->len==0)
        return(1);
    else
        return(0);
}
int 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线性表已空! ");
        return 0
}

// #include "stdio.h"
// #include "malloc.h"
// #define DATATYPE2 char
// typedef struct node
// {   DATATYPE2 data;
//     struct node *next;
// }LINKLIST;
// LINKLIST *rcreate( )
// {
//     LINKLIST *head,*last,*p;
//     char ch;
//     p=( LINKLIST *)malloc( sizeof( LINKLIST);
//     head = p;
//     last = p;
//     p->next = NULL;
//     while( ( ch=getchar( ) )!='\n')
//     {   p=(LINKLIST *)malloc(sizeof(LINKLIST));
//         p->data=ch;
//         last->next=p;
//         last=p;
//         p->next=NULL;
//     }
//     return(head);
// }

// void DELETE(LINKLIST *head,int i)
// {   int i;
//     LINKLIST *p,*q;
//     p=head;
//     j=0;
//     while((p->next!=NULL)&&(j<i-1))
//     {
//         p = p->next;
//         j = j+1;
//     }
//     if((p->next!=NULL)&&(j==i-1))
//     {
//         q = q->next;
//         p->next=q->next;
//         free(q);
//     }
//     else
//         printf("delete fail");
// }

// int EMPTY(LINKLIST *head
// {
//     if(head->next==NULL)
//         return(1);
//     else
//     return
// }