请各位大侠帮忙看看,这个哪里有问题
要求如下1)首先创建一个顺序表:从键盘读入一组整数(长度小于等于20),按输入顺序放入顺序表,输入以-1结束(注意-1不放到顺序表内);将创建好的顺序表元素依次输出到屏幕上。
2)在已创建好的顺序表中插入一个元素:从键盘读入需插入的元素值和插入位置,调用插入函数完成插入操作;然后将顺序表元素依次输出到屏幕上。
3)在已创建好的顺序表中删除一个元素:从键盘读入欲删除的元素位置(序号),调用删除函数完成删除操作;然后将顺序表元素依次输出到屏幕上。
问题:第一个要求能正确输出,后面两个都有不能正确输出
#include<stdio.h>
#include<stdlib.h>
#define MAXNUM 20
#define true 1
#define false 0
typedef struct
{
int data[MAXNUM];
int length;
}list_type;
void createlist(list_type *p)
{
int i,elem;
p->length=0;
printf("\nplease input datas of the list\n");
for(i=0;i<MAXNUM;i++)
{
scanf("%d",&elem);
if(elem==-1)break;
p->data[i]=elem;
p->length++;
}
}
void showlist(list_type *p)
{
int i;
printf("\nthese %d records are:\n",p->length);
if(p->length<=0)
{
printf("No data!\n");
return;
}
for(i=0;i<p->length;i++)
printf("%d ",p->data[i]);
printf("\nlength of the list is:%d",p->length);
}
int insertlist(list_type *lp,int new_elem,int i)
{
int j;
if(lp->length>=MAXNUM)
{
printf("the list is full,can not insert");
return(false);
}
if(i<1||i>lp->length+1)
{
printf("\n%d is invalid value",i);
return(false);
}
else
for(j=lp->length-1;j>=i-1;j--)
lp->data[j+1]=lp->data[j];
lp->data[i-1]=new_elem;
lp->length++;
return(true);
}
int deletelist(list_type *lp,int i)
{
int j;
if(i<1||i>lp->length)
{
printf("elem not exist");
return(false);
}
else
for(j=i;j<lp->length;j++)
lp->data[j-1]=lp->data[j];
lp->length--;
return(true);
}
int delete_negative(list_type *lp,int )
{
int i,j;
for(i=0;i<lp->length;i++)
if(lp->data[i]>=0)
{
printf("negative is not exist");
return(false);
}
else
for(i=0;i<lp->length;i++)
if(lp->data[i]<0)
{
for(j=i;j<lp->length;j++)
lp->data[j]=lp->data[j+1];
lp->length--;
}
return(true);
}
void main ()
{
list_type list;
int i,data;
createlist(&list);
showlist(&list);
printf("\ninsert:Enter i and data:\n");
scanf("%d,%d",&i,&data);
insertlist(&list,data,i);
printf("\nlist after insert:\n");
showlist(&list);
printf("\ndelete:Enter i:\n");
scanf("%d",&i);
deletelist(&list,i);
printf("\nlist after delete:\n");
showlist(&list);
delete_negative(&list,i);
printf("\nlist after delete all negative:\n");
showlist(&list);
}