如何初始化呢? 郁闷。
#include <stdlib.h>
#include <stdio.h>
#define list_init_size 10
#define ok 1
#define error 0
typedef struct
{
int *elem;
int length;
int listsize;
}sqlist;
int list_init(sqlist *L);
int list_output(sqlist *L);
int main()
{
int i;
sqlist *M;
list_init(M);
M-> length =10; //欲建立一个10个元素的顺序表
for(i=0;i <10 ;i++)
scanf( "%d ",&M-> elem[i]); //用户输入数据
list_output(M);
return ok;
}
int list_init(sqlist *L) //初始化顺序表
{
L-> elem =(int*)malloc(list_init_size*sizeof(int));
if (!L-> elem ) exit(error);
L-> length =0;
L-> listsize =list_init_size;
return ok;
}
int list_output(sqlist *L) //输出表
{
int i;
for(i=0;i <L-> length ;i++)
printf( "%d ",L-> elem [i]);
return ok;
}
[解决办法]
int main()
{
int i;
sqlist *M;
list_init(M);
————————————————————
这里M没分配内存。。。
int main()
{
int i;
sqlist *M;
M =(sqlist *)malloc(sizeof(sqlist) );
list_init(M);
这样应该就搞定了。。。
[解决办法]
#include <stdlib.h>
#include <stdio.h>
#define list_init_size 10
#define ok 1
#define error 0
struct sqlist
{
int *elem;
int length;
int listsize;
sqlist()
{
elem =(int*)malloc(list_init_size*sizeof(int));
length =0;
listsize =list_init_size;
}
};
int list_init(sqlist *L);
int list_output(sqlist *L);
int main()
{
int i;
sqlist *M = new sqlist();
for(i=0;i <10 ;i++)
scanf( "%d ",&M-> elem[i]);
M-> length = i;
//用户输入数据
list_output(M);
return ok;
}
int list_output(sqlist *L) //输出表
{
int i;
for(i=0;i <L-> length ;i++)
printf( "%d\n ",L-> elem [i]);
return ok;
}
//其实结构体也有自己的构造函数的,呵呵