2

我想不通,这是我目前所拥有的。

但是该函数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);

}
4

1 回答 1

8

如何通过引用传递指针?通过引用传递它:

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

其他问题:

Queue_type *temp;
temp->data = item;

是未定义的行为。

强制链接。您正在 C++ 环境中编写 C 代码。只是不要。

于 2012-11-20T17:56:57.590 回答