#include <stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef struct
{
int data[MAXSIZE];
int last;
int *L;
}S;
S *init_S()
{
S *L;
L=(S *)malloc(sizeof(S));
L->last=-1;
return L;
}
int CreatList_S(S *L)//顺序表初始化
{
int i,j;
printf("输入10个顺序表数据\n");
for(i=0;i<10;i++)
{
scanf("%d",&j);
L->data[i]=j;
L->last++;
}
return 1;
}
int Insert_S(S *L,int i,int x)//插入
{
int j;
if(L->last==MAXSIZE-1)
{
printf("表满\n");
return -1;
}
if(i<1||i>L->last+2)
{
printf("位置错误\n");
return 0;
}
for(j=L->last;j>=i-1;j--)
L->data[j+1]=L->data[j];
L->data[i-1]=x;
L->last++;
return 1;
}
int Delete_S(S *L,int i)//数据删除
{
int j;
if(i<1||i>L->last+1)
{
printf("不存在这个元素");
return 0;
}
for(j=i;j<=L->last;j++)
L->data[j-1]=L->data[j];
L->last--;
return 1;
}
int Locate_S(S *L,int x)//查找
{
int i=0;
while(i<=L->last&&L->data[i]!=x)
i++;
if(i>L->last)
return -1;
else
return i+1;
}
int Print_S(S *L)//输出顺序表元素
{
int i;
for(i=0;i<=L->last;i++)
printf("%d\t",L->data[i]);
printf("\n");
}
int main()
{
int i,x,p;
int m,k;
S *L;
L=init_S();
CreatList_S(L);
Print_S(L);
printf("输入插入的位置和元素\n");
scanf("%d%d",&i,&x);
Insert_S(L,i,x);
Print_S(L);
printf("输入删除的位置\n");
scanf("%d",&i);
Delete_S(L,i);
Print_S(L);
printf("输入要查找的元素\n");
scanf("%d",&k);
m=Locate_S(L,k);
printf("该元素是第%d个元素\n",m);
}