能帮忙看看两个Delete函数有什么问题吗
```c
#define LIST_INIT_SIZE 100
#define LIST_INCREMENT 10
#include <stdlib.h>
#include <stdio.h>
typedef int ElemType;
typedef struct
{
ElemType *data;
int length;
int listsize;
}SqList;
void InitLIst(SqList L)
{
L->data=(ElemType)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if(!L->data) {printf("malloc error!\n"); exit(0);}
L->length = 0;
L->listsize = LIST_INIT_SIZE;
}
void CreateList(SqList *L,int i)
{
InitList(L);
for(i=0;ilength;i++)
{
scanf("%d",&L->data[i-1]);
if (L->data[i]==-1)break;
L->length++;
}
}
int Delete_MIN(SqList *L,int i,ElemType e)
{
int pos=0;
int j;
if(i<1||i>L->length)
return 0;
e=L->data[0];
for(i=1;ilength;i++)
{
if(e>L->data[i])
{
e=L->data[i];
pos=i;
}
printf("%d\n",&e);
}
for(j=pos;jlength-1;j++)
L->data[j]=L->data[j+1];
L->length--;
return 1;
}
int Delete(SqList *L,int i,ElemType e)
{
int j;
if(i<1||i>L->length)
return 0;
scanf("%d",e);
for(i=0;ilength;i++)
{
if(L->data[i]==e)
for(j=i;jlength;j++)
L->data[j]=L->data[j+1];
}
L->length--;
return 1;
}
void Print(SqList *L,int i)
{
for(i=0;ilength;i++)
printf("%d\n",L->data[i]);
printf("\n");
}
int main()
{
SqList L;
int i;
int e;
CreateList(&L,i);
Print(&L,i);
Delete_MIN(&L,e);
Print(&L,i);
Delete(&L,e);
Print(&L,i);
}
```这是报错结果
大哥,三个参数,你填了两个,肯定对不上啊。
你贴出来的错误太多,我就不一一改了,你参考下:
#include <stdio.h>
#include <stdlib.h>
#define listsize 100
typedef struct{
int data[listsize];
int length;
}Seqlist;
//新建顺序表
void createlist(Seqlist *l,int n)
{
int i;
printf("请输入顺序表元素:\n");
for(i=0;i<n;i++)
{
scanf("%d",&l->data[i]);
l->length=n;
}
}
//输出顺序表
void printlist(Seqlist *l,int n)
{
int i;
printf("顺序表为:");
for(i=0;i<n;i++)
{
printf("%d ",l->data[i]);
}
}
//查找元素
void locateElem(Seqlist *l,int n)
{
int i=1,*p;
p=l->data;
printf("\n请输入要查找的元素n:");
scanf("%d",&n);
while(i<=l->length&&(*p++!=n)) ++i;
if(i<=l->length)
printf("要查找的数的位置为:%d",i);
}
//插入元素
void listinsert(Seqlist *l,int i,int n)
{
int *q,*p;
printf("\n请输入要插入的数:");
scanf("%d",&n);
if(l->length==0)
{
l->data[0]=n;
++l->length;
}
q=&(l->data[0]);
while((*q<=n)&&(q<=&(l->data[l->length-1])))
{
++q;
}
++l->length;
for(p=&(l->data[l->length-1]);p>=q;--p)
{
*(p+1)=*p;
*p=n;
}
printf("输出新表:\n");
for(i=0;i<l->length;i++)
{
printf("%d ",l->data[i]);
}
}
//删除元素
void listdelete(Seqlist *l,int i,int n)
{
int *p,*q;
printf("\n请输入要删除的数的位置:");
scanf("%d",&i);
if(i<1||i>l->length)
printf("删除元素失败!");
p=&l->data[i-1];
n=*p;
q=l->data+l->length-1;
for(++p;p<=q;++p)
{
*(p-1)=*p;
--l->length;
}
for(i=0;i<l->length+1;i++)
{
printf("%d ",l->data[i]);
}
}
void main()
{
int n;
int i=0;
Seqlist l;
l.length=0;
printf("请输入线性表长度:");
scanf("%d",&n);
createlist(&l,n);
printlist(&l,n);
locateElem(&l,n);
listinsert(&l,i,n);
listdelete(&l,i,n);
printf("\n");
}
运行结果为: