请帮忙看一下,怎样实现那个删去功能啊,我写的那个输入与输出不符合!谢谢!
#include<stdio.h># define maxsize 50
struct sqlist
{
int sqlist[maxsize];
int size;
};
setnull(struct sqlist *p) /*装入表*/
{
p->size=0;
}
int length(struct sqlist *p) /*表长度*/
{
return(p->size);
}
get(struct sqlist *p,int i) /*读取元素*/
{
if (i<1 && i>p->size)
printf("错误");
else
printf("该序号对应的元素为:%d",p->sqlist[i-1]);
}
locate(struct sqlist *p,int x) /*查找元素*/
{
int i=1;
while (i<=p->size && p->sqlist[i-1]!=x)
i++;
if (i==p->size+1 )
printf("错误");
else printf("该元素第一次出现的位置:%d",i);
}
insert(struct sqlist *p,int i,int x)
{
int j;
if (i<1 && i>p->size+1)
printf("位置不正确不能行插入\n");
else
{
for (j=p->size-1;j>=i;j--)
p->sqlist[j]=p->sqlist[j-1];
p->sqlist[j-1]=x;
p->size++;
}
for(j=1;j<=p->size;j++)
printf("%d ",p->sqlist[j-1]);
}
void delete(struct sqlist *p,int i)
{
int j;
if (i<1 || i>p->size)
printf("错误");
else
{
for (j=i;j<p->size;j++)
p->sqlist[j-1]=p->sqlist[j];
p->size--;
}
printf("此线性表为:\n");
for (i=1;i<=p->size;i++)
printf("%d ",p->sqlist[i-1]);
}
display(struct sqlist *p)
{
int j;
if (p->size==0)
printf("此表为空无法显示!");
else
printf("the list");
if (p->size==1)
printf("%d",p->sqlist[p->size-1]);
else
{
for(j=1;j<=p->size;j++)
printf("%d ",p->sqlist[j-1]);
}
}
main()
{
int i,select,a,j;int w;
struct sqlist *p;
struct sqlist l;
setnull(&l);
printf("请输入数据:\n");
p=&l ;
p->size=0;
for (i=1;i<5; i++)
{
scanf("%d",&l.sqlist[i-1]);
p->size++;
}
printf("\n");
printf("1:置空表! \n");
printf("2:求长度! \n");
printf("3:读取元素! \n");
printf("4:定位查找! \n");
printf("5:插入! \n");
printf("6:删除! \n");
printf("7:显示! \n");
printf("请选择(1----8) \n");
scanf("%d",&select);
switch(select)
{
case 1:
setnull(&l);break;
case 2:
printf("chang du %d",length(&l));
break;
case 3:
printf("输入序号:");
scanf("%d",&i);
get(&l,i);
break;
case 4:
printf("输入元素:");
scanf("%d",&i);
locate (&l,i);
break;
case 5:
printf("输入插入的元素及位置:");
scanf("%d,%d",&i,&j);
insert(&l,i,j);
break;
case 6:
printf("输入所要删除数据的位置:");
scanf("%d",&w);
delete(&l,w);
break;
case 7:
display(&l);
break;
}
}