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++ - 成员函数指针的奇怪 C++ 规则?

c++ - 使用包含空格的命令时 ExternalProject_Add 的奇怪行为

java - Java中的链表结构

c - 对数组变量的引用是什么类型?

c++ - 用于快速搜索的二进制数据结构

c - C中的编译器错误链接列表

c++ - 使类变量在其他范围内可用? C++

c++ - Jsoncpp FastWriter 右修剪

c++ - 如果整数与指针的大小相同,是否将整数重新解释为指针双射?

c - 将函数的地址获取到C中的结构中