帮我看看这段代码有什么问题~~顺序表的~~

来源:百度知道 编辑:UC知道 时间:2024/06/28 00:49:48
#include<iostream>
#include<stdlib.h>
using namespace std;

typedef struct
{int data[50];
int length;
}Sqlist;
Sqlist L;

void initlist(Sqlist);
void createlist(Sqlist,int *,int);
int listempty(Sqlist);
void displist(Sqlist);

void main()
{int i,n;
int a[50];
for(i=0;i<50;i++)
a[i]=i;
n=i;
initlist(L);
createlist(L,a,n);
displist(L);
}

void initlist(Sqlist *&L)
{L=(Sqlist * )malloc(sizeof(Sqlist));
L->length=0;
}

void createlist(Sqlist *&L,int a[],int n)
{int i;
L=(Sqlist * )malloc(sizeof(Sqlist));
for(i=0;i<n;i++)
L->data[i]=a[i];
L->length=i;
}

void displist(Sqlist *L)
{int i;
if(!listempty(*L))
for(i=0;i<L->length;i++)
cout<<L->data[i];
cout<<endl;
}

int listempty(Sqlist *L

unresolved external symbol 未解析的外部符号,通常就是你的函数或者全局变量没有定义造成的。

在这里,你的main里调用的4个函数都没有定义! 你可能要说main后面不是有那4个函数吗, 那4个函数 根本和你main前声明的是不同的函数, c++里面, 只要参数类型不同,就是不同的函数。

用第一个函数来举例,你声明并调用了一个 函数 void initlist(Sqlist);(也就是报告找不到定义的 void __cdecl displist(struct Sqlist)" )
然而你后面却定义的是另外一个函数void initlist(Sqlist *&L);
一个是接受传值,另一个却是接受指针的引用类型。

你有的C++写的,但是开辟内存的时候用的是C语言离得函数。应该用new来开辟内存

#include<iostream>
#include<stdlib.h>
using namespace std;

typedef struct
{int data[50];
int length;
}Sqlist;
Sqlist *L;

void initlist(Sqlist **L);
void createlist(Sqlist **,int *,int);
int listempty(Sqlist *);
void displist(Sqlist *);

void main()
{int i,n;
int a[50];
for(i=0;i<50;i++)
a[i]=i;
n=i;
initlist(&L);
createlist(&L,a,n);
displist(L);
}

void initlist(Sqlist **L)
{
*L=(Sqlist * )malloc(sizeof(Sql