#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
// }