您的位置:首页 > 其它

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

2014-10-18 10:26 302 查看
#include <stdio.h>

#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<n)
{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");

}

int  Locate(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);

}

int  InsList(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;

}

int  DelList(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;

}

void  main()

{
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);
}

}

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐