我的程序崩潰了,我不知道爲什麼。我試圖創建一個10個元素的隊列。我的主要代碼:我的程序崩潰
#include "queue.h"
int main(void){
Queue * queue;
queue = create_q(10);
return 0;
}
我queue.h代碼:
#ifndef QUEUE_H_
#define QUEUE_H_
#endif /* QUEUE_H_ */
#include <stdbool.h> /* for bool type */
#include <stdio.h> /* for standard IO support */
#include <stdlib.h> /* for malloc() and free() functions */
typedef struct patient { /* my structure */
char name [20];
char surname [20];
int priority;
struct patient * next; /* pointer to next node */
}Node;
typedef struct queue {
Node * head;
Node * last;
}Queue;
Queue * create_q(int size);
我queue.c代碼:
#include "queue.h"
Queue * create_q(int size){
Node * temp, * temp2;
Queue * new ;
int i=0,j;
temp = (Node *) malloc(sizeof(Node));
new->head = temp;
if(temp == NULL){
printf("There is not enough memory to create the %dth Node of your queue",i);
for (j=1; j<=i; j++){
new->head = temp->next;
free(temp);
}
return NULL;
}
if (temp != NULL){
new->head = temp;
for (i=1; i<size; i++){
temp2 = (Node *) malloc(sizeof(Node));
temp->next = temp2;
}
return new;
}
return 0;
}
使用Eclipse調試器,它似乎在轟然新 - > head = temp。希望有人能找到我的錯誤,因爲我不能。
您從未爲'new'分配過空間。 – Barmar
你使用gcc或g ++來編譯這個嗎? – hyades
@hyades必須是gcc。 g ++可能會在名爲'new'的變量上出現,因爲這是一個C++關鍵字。 – duskwuff