刚刚学了顺序表,想写写代码,一直显示有错!!求解答!
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define MAXSIZE 100
#define ElemType int
void InitList(SeqList *L) //初始化
{
L->elem=(ElemType *)malloc(sizeof(ElemType)*MAXSIZE);
L->length=0;
}
typedef struct
{
ElemType *elem;
int length;
}SeqList;
int main()
{
SeqList *L;
InitList(&L);
int i;
int n;
scanf("顺序表长度:%d",&n);
L->length=n;
for(i=0;i<n;i++)
{
scanf("%d",L->elem);
}
for(i=0;i<L->length;i++)
{
printf("%d",L->elem[i]);
}
return 0;
}
总会报错:
C:\Users\asus\Desktop\c语言\顺序表.cpp [Error] cannot convert 'SeqList**' to 'SeqList*' for argument '1' to 'void InitList(SeqList*)'
求解答。
共有5处问题,见注释,供参考:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define MAXSIZE 100
#define ElemType int
typedef struct //表定义,要在函数定义之前 修改
{
ElemType *elem;
int length;
}SeqList;
void InitList(SeqList**L) //修改
{
(*L)=(SeqList*)malloc(sizeof(SeqList)); //修改 表指针 L 需初始化
(*L)->elem=(ElemType *)malloc(sizeof(ElemType)*MAXSIZE);
(*L)->length=0;
}
int main()
{
SeqList *L;
InitList(&L);
int i;
int n;
//scanf("顺序表长度:%d",&n);//修改 ,需分开写下面两句
printf("请输入顺序表长度:");
scanf("%d", &n);
L->length=n;
for(i=0;i<n;i++)
{
scanf("%d",&L->elem[i]);
//scanf("%d",L->elem);//修改
}
for(i=0;i<L->length;i++)
{
printf("%d ",L->elem[i]);
}
return 0;
}
使用 InitList(&L); 需要函数定义为 void InitList(SeqList **L)