#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
#define OVERFLOW -1
typedef int elemtype;
typedef int status;
#define M 100
typedef struct{ //定义顺序表
elemtype *elem;
int length;
int listsize;
}sqlist;
status initlist(sqlist &l) //初始化顺序表
{
l.elem=(elemtype *) malloc(M*sizeof(elemtype));
if (!l.elem) exit(OVERFLOW);
l.length=0;
l.listsize=M;
return OK;
}
status input(sqlist &l,int n) //输入函数
{
int i=0;
if(n>l.listsize) return ERROR;
for(i=0;i<n;i++)
{
scanf("%d",&l.elem[i]);
}
l.length=n;
return OK;
}
status output(sqlist l) //输出函数
{
int i;
for(i=0;i<l.length;i++)
printf("%d ",l.elem[i]);
printf("\n");
return OK;
}
status ldelete(sqlist &l,int e) //删除元素函数
{
int i=0;
elemtype *p;
for(p=l.elem;p<l.elem+l.length+1;p++,i++)
{
if(*p==e)
break;
}
for(p=l.elem+i;p<l.elem+l.length-1;p++)
*p=*(p+1);
l.length--;
return OK;
}
void main() //主函数
{
sqlist l;
int n,e;
initlist(l);
printf("请输入线性表l的元素个数n:\n");
scanf("%d",&n);
printf("请输入线性表l的%d个元素:\n",n);
input(l,n);
printf("请输入要删除的元素elem:\n");
scanf("%d",&e);
ldelete(l,e);
printf("删除后的顺序表为:\n");
output(l);
}