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