[英]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.