线性表中实现查找、删除、插入元素

#include
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{
ElemType elem[MAXSIZE];
int last;
} SqList;
void InitList(SqList &sq)
{
sq.last=-1;
}


void InputList(SqList &sq)
{
int i=0,n=0;
printf("输入线性表的长度:");
scanf("%d",&n);
printf("输入线性表元素:");
while(i {scanf("%d",&sq.elem[i]);
i++; }
sq.last=n-1;
printf("\n");
}


void DispList(SqList sq)
{
int i;
printf("输出线性表元素:");
for (i=0; i<=sq.last; i++)
printf("%d",sq.elem[i]);
printf("\n");
}
intLocate(SqList sq,ElemType x)
{
int i=0;
while ((i<=sq.last)&&(sq.elem[i]!=x))
i++;
if (i>sq.last)
return(-1);
else
return(i+1);
}
intInsList(SqList *L,int i,ElemType e)
{
int k;
if((i<1)||(i>L->last+2))
{
printf("插入i值不合法");
return 0;
}
if(L->last>=MAXSIZE-1)
{
printf("表已满,无法插入");
return 0;
}
for (k=L->last; k>=i-1; k--)
L->elem[k+1]=L->elem[k];
L->elem[i-1]=e;
L->last++;
return 1;
}
intDelList(SqList *L,int i,ElemType *e)
{
int k;
if((i<1)||(i>L->last+1))
{
printf("删除位置不合法");
return 0;
}
*e=L->elem[i-1];
for(k=i; i<=L->last; k++)
L->elem[k-1]=L->elem[k];
L->last--;
return 1;
}
voidmain()
{
SqList sq;
ElemType x;
int m,j,k,number,flag;
InitList(sq);
InputList(sq);
DispList(sq);

printf("输入待查找的元素:");
scanf("%d",&x);
m=Locate(sq, x);
if (m==-1)
printf("线性表中没有元素%d!\n",x);
else
printf("%d是线性表的第%d个元素!\n",x,m);

printf("输入待插入的元素的位置:\n");
scanf("%d",&j);
printf("输入待插入元素:\n");
scanf("%d",&number);

flag=InsList(&sq,j,number);
if(flag==0)
printf("插入失败!\n");
else
{ printf("插入成功!\n");
DispList(sq);
}

printf("输入你想删除的元素位置:\n");
scanf("%d",&k);
flag=DelList(&sq,k,&x);
if(flag==0)
printf("删除不成功!\n");
else
{ printf("删除成功!删除后的线性表:\n");
DispList(sq);
printf("输出删除的元素值:%d\n",x);
}
}


    推荐阅读