C++ Stacked List 推送函数打印下一个/上一个元素

标签 c++ pointers linked-list stack

我只是有一个关于打印出先前值的问题。当代码压入堆栈顶部时,代码会打印出一切正常,但当我尝试输出前一个头部时,它只是指向一个内存地址。

void linkedListStack::push(int v)
{
    listNode *newNode = new listNode;    
    newNode->value = v;
    newNode->next = NULL;
    if (top != NULL)
    {
        newNode->next = top;
    }
    top = newNode;
    cout <<"Pushed "<< newNode->value << " onto the top of the stack." << endl;
    cout << "Previous is: " << newNode->next << endl;

}

push 函数从文件中读取整数并将该数据压入堆栈,但我不确定如何打印出下一个/上一个值。

编辑:

 newNode->next->value

已经试过了,还是坏了。

最佳答案

newNode->next 是指向列表中下一个元素的指针。这自然是一个内存地址。所以,

cout << "Previous is: " << newNode->next << endl;

打印出栈中下一个元素的内存地址。您需要的是下一个元素的值。当您有一个指向对象的指针并且需要访问对象中的某些内容时,您可以使用箭头运算符 (->)。所以你的代码应该是:

cout << "Previous is: " << newNode->next->value << endl;

如果没有下一个元素怎么办(插入第一个元素时总是这样)?在您的情况下,newNode->next 将是 NULL,从而在您首次输入元素时导致意外结果。所以你需要检查它是否为NULL:

if (newNode->next != NULL)
{
    cout << "Previous is: " << newNode->next->value << endl;
}
else
{   
    cout << "No previous element" << endl;
}

关于C++ Stacked List 推送函数打印下一个/上一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35255265/

相关文章:

c++ - 在 ARM 上使用 Qt 的简单程序中的段错误

c++ - 使用寓言从Fortran 77转换为C++

java - 如何使用 JNA 正确映射 `MagImageScalingCallback`?

c++ - 从 QMap 中删除一个指针?

c++ - 在 C 程序中 if 语句在运行时被忽略

c - C语言中如何合并两个已排序的链表?

c++ - 如何运行实时服务器win winsock?

c++ - 继承自 boost::asio::ip::tcp::socket 的自定义套接字

c - 正确返回指针

c++ - 从函数中删除动态内存分配但无法访问变量