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++ - 系列的第n项

c++ - 在 C++ 中获取指向数组的指针的拷贝

c - 等式 "*x_ptr = &x "中每个变量的伪代码翻译是什么?

c++ - 访问父类的子模板类的数据

c++ - 一次可以输出多少个字符或字符,或数据std::cout的字节?

c - c 中带有指针的 fread 和 fwrite

c - 在链接列表中搜索

c++ - 反向链表算法

python - 分离一个单链表,使得所有奇数节点一起出现,偶数节点一起出现