C语言在VScode上实现顺序表的初始化、查找、插入、删除、输出、撤销
没找到报错的地方哪里有问题,烦请懂的朋友指正
#include <stdio.h>
#define ERROR 0
#define OK 1
typedef struct seqList
{
int n;
int maxLength;
int *element;
}SeqList;
int Init(SeqList *L,int mSize);
int Find(SeqList *L);
int Insert(SeqList *L);
int Delete(SeqList *L);
int Output(SeqList *L);
void Destroy(SeqList *L);
int main()
{
int length;
SeqList *p;
do
{
printf("please input the length of array");
scanf("%d",&length);
} while (length<10);
Init(&p,length);
Find(&p);
Insert(&p);
Delete(&p);
Output(&p);
Destroy(&p);
return 0;
}
int Init(SeqList *L,int mSize)
{
int i=0;
L->maxLength=mSize;
L->n=10;
L->element=(int)malloc(sizeof(int)*mSize);
if(!L->element)
return ERROR;
else
{
printf("please input the element of array");
for(i;i<10;i++)
scanf("%d",L->element[i]);
}
return OK;
}
int Find(SeqList *L)
{
int i=0;int *x;
printf("please input the element to be found");
scanf("%d",&i);
if(i<0||i>L->n-1)
return ERROR;
*x=L->element[i];
return OK;
}
int Insert(SeqList *L)
{
int x,i,p;
if(L->n==L->maxLength)
return ERROR;
printf("please input the number and the place\n");
do{
scanf("%d%d",&x,&i);
}while(i<-1||i>=L->n); //i<-1而非0
p=L->n;
for(p;p-i>0;p--)
{
L->element[p]=L->element[p-1];
}
L->element[i]=x; //新元素放i还是i+1位置
L->n=L->n+1;
return OK;
}
int Delete(SeqList *L)
{
int i,p,q;
if(L->n==L->maxLength)
return ERROR;
printf("please input the number to delete\n");
scanf("%d",&i);
if(i<0||i>L->n)
return ERROR;
p=L->n;
for(p;p-i>0;p--)
{
L->element[i]=L->element[i+1];
i++;
}
L->n=L->n-1;
return OK;
}
int Output(SeqList *L)
{
int i=0;
if(0==L->n)
return ERROR;
for(i;i<L->n;i++)
printf("%d ",L->element[i]);
printf("\n");
return OK;
}
void Destroy(SeqList *L)
{
L->n=0;
L->maxLength=0;
free(L->element);
}
以下是报错
```c
[Running] cd "d:\Desktop\VScodeCompile\" && gcc B22130809_1.c -o B22130809_1 && "d:\Desktop\VScodeCompile\"B22130809_1
B22130809_1.c: In function 'main':
B22130809_1.c:23:24: error: conflicting types for 'p'
SeqList *p;SeqList p;
^
B22130809_1.c:23:14: note: previous declaration of 'p' was here
SeqList *p;SeqList p;
^
B22130809_1.c: In function 'Init':
B22130809_1.c:42:21: warning: implicit declaration of function 'malloc' [-Wimplicit-function-declaration]
L->element=(int)malloc(sizeof(int)*mSize);
^~~~~~
B22130809_1.c:42:21: warning: incompatible implicit declaration of built-in function 'malloc'
B22130809_1.c:42:21: note: include '<stdlib.h>' or provide a declaration of 'malloc'
B22130809_1.c:42:15: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
L->element=(int)malloc(sizeof(int)*mSize);
^
B22130809_1.c: In function 'Destroy':
B22130809_1.c:113:5: warning: implicit declaration of function 'free' [-Wimplicit-function-declaration]
free(L->element);
^~~~
B22130809_1.c:113:5: warning: incompatible implicit declaration of built-in function 'free'
B22130809_1.c:113:5: note: include '<stdlib.h>' or provide a declaration of 'free'
[Done] exited with code=1 in 0.085 seconds