#include <stdio.h>
#include <stdlib.h>
struct tree {
int data;
struct tree *left, *right;
};
struct queue {
struct tree **nodeQ = (struct tree**)malloc(sizeof(struct tree*));
int front;
int rear;
};
答案 0 :(得分:1)
在C中,您无法像尝试使用nodeQ
成员一样初始化内联结构成员。
创建结构时需要初始化成员。
所以你需要做一些像
这样的事情struct queue q = { malloc(sizeof(struct tree *)), 0, 0 };
或
struct queue *q = malloc(sizeof(struct queue));
q->nodeQ = malloc(sizeof(struct tree *));
q->front = 0;
q->rear = 0;
答案 1 :(得分:0)
您遇到的问题是在定义结构时初始化结构。 使用struct name_of_struct {...}时;您正在定义数据类型。因此,你不能给它一个正面的价值。
struct tree{
int data;
struct tree *left,*right;
};
struct queue{
struct tree ** nodeQ;
int front;
int rear;
};
这应该作为一个定义,也记得使用缩进和注释你的代码,因为这将导致一个更容易理解的程序,你将在2周后实际理解它。
另外我认为你的代码实际上有一个错误,nodeQ不应该是普通指针而不是双指针吗?如果您尝试取消引用(访问指针引用的内容)两次,则会出现seg错误。
这里是你应该如何初始化nodeQ的内容,假设它是一个单指针,在这个函数中我将在这次初始化它。
#include <stdio.h>
#include <stdlib.h>
struct tree{
int data;
struct tree *left,*right;
};
struct queue{
struct tree * nodeQ;
int front;
int rear;
};
int main(void)
{
struct queue my_queue;
if(my_queue.nodeQ=malloc(sizeof(struct tree)))
fprintf(stderr, "Unable to allocate memory for my_queue nodeQ\n");
return 0;
}