#include
#include
#include
#define OK 1
#define ERROR -1
#define TRUE 1
#define FALSE 0
#define ElemType int
#define MAXSIZE 100//最大长度
typedef struct
{
ElemType elem[MAXSIZE];
int last;
}SeqList;
void Input(SeqList*L,int n)//输入函数
{
int i;
printf("请输入线性表的各元素值:\n");
for(i=0;i
scanf("%d",&L->elem[i]);
}
void Output(SeqList L)//输出函数
{
int i;
for(i=0;i<=L->last;i++)
printf("%2d,",L->elem[i]);
printf("\n");
}
int Locate(SeqList L,ElemType e)//内容查找函数
{
int i;
i=0;
while((i<=L.last)&&(L.elem[i])!=e)
i++;
if(i<=L.last)
return(i+1);//返回序号
else
return(-1);
}
int InsList(SeqList *L,int i,ElemType e)//插入数据
{
int k;
if((iL->last+2))/首先判断插入位置是否合法*/
{
printf("插入位置不合法\n");
return(ERROR);
}
if(L->last>=MAXSIZE-1)
{
printf("表已满无法插入");
return(ERROR);
}
for(k=L->last;k>=i-1;k--)//为插入元素而移动位置
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e;//第i个元素的下标为i-1
L->last++;
return(OK);
}
int DelList(SeqList L,int i,ElemType *e)//删除函数
/在顺序表L中删除第i个数据元素,并用指针参数e返回其值。i的合法取值为1≤i≤L.last+1*/
{
int k;
if((iL->last+1))
{
printf("删除位置不合法!\n");
return(ERROR);
}
e=L->elem[i-1];/将删除的元素存放到e所指向的变量中*/
for(k=i;k<=L->last;k++)
L->elem[k-1]=L->elem[k];/*将后面的元素依次前移*/
L->last--;
return(TRUE);
}
void main()//主函数
{
SeqList l,*la;
int p,q,r,k,j,m,num;
printf("请输入线性表的长度:");
scanf("%d",&r);
l.last=r-1;
la=&l;
Input(la,la->last+1);
Output(la);
//按内容查找元素
printf("请输入要查找的元素值:\n");
scanf("%d",&q);
p=Locate(l,q);
if(p==-1)
printf("在此线性表中没有该元素!\n");
else
printf("该元素在线性表中的位置为:%d\n",p);
//插入元素(在i处插入元素e)
printf("请输入要插入的位置:\n");
scanf("%d",&k);
printf("请输入要插入的元素值:\n");
scanf("%d",&j);
InsList(la,k,j);//调用插入函数
Output(la);
//删除元素 删除第i个元素
printf("请输入需要删除的元素的位置:\n");
scanf("%d",&m);
DelList(la,m,&num);
printf("删除成功,删除的元素为%d",num);
printf("\n");
Output(la);
}