2012-11-20 200 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