C语言 数据结构与计算顺序表删除表中为e的全部元素

能帮忙看看两个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);
}

img

```这是报错结果

大哥,三个参数,你填了两个,肯定对不上啊。

你贴出来的错误太多,我就不一一改了,你参考下:

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


运行结果为:

img