回 帖 发 新 帖 刷新版面

主题:线性表这样初始化可以吗?如果不可以的话,该怎么改?

#include<stdio.h>
typedef int ElemType;
#define INITSIZE 100
#define LISTINCREMENT 10
typedef struct{
    ElemType * data;
    int length;
    int listsize;
}sqlist;
int initlist(sqlist *L){
    L->data=(ElemType*)malloc(INITSIZE*sizeof(ElemType));
    if(L->data==NULL)
    return 0;
    L->length=0;
    L->listsize=INITSIZE;
    return 1;
}
void main(){
sqlist *L;
int i=initlist(L);
printf("%d",i);
}


回复列表 (共1个回复)

沙发

//L 只是一个指针,并没有分配空间。引用data等都是不合法的。
//改后如下:
#include<stdio.h>
#include<stdlib.h> //下面用到malloc

typedef int ElemType;

#define INITSIZE 100
#define LISTINCREMENT 10

typedef struct{
    ElemType * data;
    int length;
    int listsize;
}sqlist;

int initlist(sqlist *L)
{
    L->data=(ElemType*)malloc(INITSIZE*sizeof(ElemType));
    if(L->data==NULL)
    return 0;
    L->length=0;
    L->listsize=INITSIZE;
    return 1;
}
void main()
{
    sqlist *L;
    int i;
[color=FF0000]    L=(sqlist*)malloc(sizeof(sqlist));//为L分配空间[/color] 
    if(NULL == L) 
        {
        return -1; 
        }
    i=initlist(L);
    printf("%d",i);
    free(L);
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册