队列实现失去了对头节点的跟踪

Queue implementation is losing track of head node

本文关键字:节点 跟踪 实现 失去 队列      更新时间:2023-10-16

我有一个队列添加函数实现

void queue::add(myObj info)
{
    node* node = new node;
    node->info = &info; //<---suspect
    node->next = NULL;
    if(head == NULL){
        head = node;
    }
    else{
        tail->next = node;
    }
    tail = node;
    count++;
}

每次它被访问头节点的数据点到我传入的任何东西。我意识到有一个模板,但我正试图建立一个,因为我显然需要实践。

我试图保持所有指针指向原始对象。我想传入对象并指向引用。

节点是具有myObj * infonode * next的结构体

info是你的函数的一个参数,它是按值传递的。在这种情况下,&info是参数的地址,而不是原始数据的地址。

这是未定义的行为,只能给出奇怪的结果。

一个可能的解决方案是:

void queue::add(myObj& info)  // pass by reference
{
    ... // unchanged code
}

在这种情况下,&info将引用原始对象的地址。