2014-12-27 93 views
0

我的程序崩潰了,我不知道爲什麼。我試圖創建一個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。希望有人能找到我的錯誤,因爲我不能。

+1

您從未爲'new'分配過空間。 – Barmar

+0

你使用gcc或g ++來編譯這個嗎? – hyades

+0

@hyades必須是gcc。 g ++可能會在名爲'new'的變量上出現,因爲這是一個C++關鍵字。 – duskwuff

回答

5

您從未分配過新的隊列。您需要:

Queue *new = malloc(sizeof(Queue)); 
+0

感謝您的幫助! – user3540561

+0

@ user3540561你知道如何接受答案嗎?請接受這一個。這是正確的。 –