动态分配链表的数组

时间:2013-05-23 09:25:32

标签: c arrays malloc

所以我正在尝试制作一系列链表,起初我有以下代码:

typedef struct node{
    int data;
    struct node *next;
} node;

struct ko {
    struct node *first;
    struct node *last;
} ;

struct ko array[6];

使用此代码,程序的其余部分运行正常,但是,我希望用户能够在程序启动时定义数组大小,经过一些研究后我认为它应该是这样的:

.h文件

typedef struct node{
    int data;
    struct node *next;
} node;



struct ko {
    struct node *first;
    struct node *last;
} ;

struct ko *array;

main.c文件:

int size;
printf("array size: ");
scanf("%d", &size);
array = malloc(sizeof(struct ko) * size);

使用这段代码,程序编译得很好,但它只是在运行时卡住,它不会崩溃,它只是没有做任何事情......所以我想知道问题是否在这段代码中,或者该计划的其他地方.. 谢谢

2 个答案:

答案 0 :(得分:0)

这里没有什么是错误的......只需确保对数组内容进行零初始化(实际上100%可移植的方式是for循环,但使用calloc()可以解决所有问题通常的平台)。

答案 1 :(得分:0)

程序中只有一个错误,malloc返回void *,你需要输入case(struct ko *)。除此之外,我没有看到任何错误。我也检查了VS中的相同程序。它工作正常。