2012-11-20 198 views
1

我想不出來,這是我迄今爲止。如何通過引用傳遞結構?

但功能Enqueue()不改變Head & Tail對象從主要方法。

我該怎麼做?

#include <stdio.h> 

typedef struct queuenode{ 
    int data; 
    struct queuenode *next; 
} Queue_type; 

void Enqueue(Queue_type *head, Queue_type *tail , int item) 
{ 
    Queue_type *temp; 
    temp->data = item; 
    temp->next = NULL; 
    if (tail == NULL){//if first node 
     head=temp; 
     tail=temp; 
    } 
    else{ 
     tail->next = temp; 
     tail = temp; 
    } 
} 

void main(void) 
{ 
    Queue_type *Head; 
    Queue_type *Tail; 

    Head = NULL; 
    Tail = NULL; 

    printf("\n[*]Enter Number to Enqueue : "); 
    scanf("%d", &item); 
    Enqueue(Head, Tail, item); 

} 
+0

還有一個問題是不爲你的Queue_type對象分配內存。 – Lalaland

+0

我沒有看到你通過引用傳遞任何東西的地方。你可以說得更詳細點嗎?你的意思是傳遞一個指針嗎? –

+0

如果你碰巧通過選項對話框設置你的編輯器將選項卡擴展到空格... – 6502

回答

8

如何通過引用傳遞指針?按引用傳遞它:

void Enqueue(Queue_type *&head, Queue_type *&tail , int item) 

其他問題:

Queue_type *temp; 
temp->data = item; 

是不確定的行爲。

Mandatory link.您正在C++環境中編寫C代碼。不要。

+0

...或指針指針(Queue_type **頭),選擇你的毒藥...... – Nim