繁体   English   中英

在自实现的队列 C++ 中链接头和尾

[英]Linking head and tail in a self-implemented queue C++

在 C++ 中做一个自我实现队列。 问题是关于添加第一个元素。 我知道如果 head 为 NULL 则有一种明显的检查方法,那么我们也会改变 head,如果不是,那么我们不接触它。 但有人告诉我还有另一种我不明白的方式。 这个例子是这样的:

first = (QueueNode*)&last;

那么我应该分配最后一个元素并且不需要 if-check。 但它实际上不起作用,那么有没有办法实现我所说的以及我做错了什么?

struct QueueNode
{
    T data;
    QueueNode* next;
} *first, *last;

编辑:我们实现入队操作的通常方式是

void Enqueue(T data)
{
    QueueNode* node = new QueueNode();
    node->data = data;
    node->next = last;
    last = node;
    if (first == NULL) first = last; // <- THIS is what I want to get rid off
}

错误在这里:

first = (QueueNode*)&last;

在哪里 :

struct QueueNode
{
    T data;
    QueueNode* next;
} *first, *last;

您已经将last声明为 pointer ,然后当您将其分配给first时,您将再次取消引用此指针。

所以你有一个指向QueueNode结构的指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM