#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线性表已空!");
}