尝试使用堆栈反向链接列表,但尝试重写数据时始终遇到问题。当我从堆栈中弹出时,尝试从数据类型void分配一个char。
master
尝试保存数据时,这是我收到代码错误的行。
void CharList::reverseNodes(){
CharNode *nodePntr;
CharNode *pre_nodePntr;
std::stack<char> myStack;
pre_nodePntr = nullptr;
nodePntr = nullptr;
if (top){
nodePntr = top;
while (nodePntr != nullptr){
myStack.push(nodePntr->data);
nodePntr = nodePntr->pntr;
}
nodePntr = top;
while (!myStack.empty()) {
nodePntr->data = myStack.pop();
nodePntr = nodePntr->pntr;
}
} else{
std::cout << "No nodes exist to reverse." << std::endl;
}
}
答案 0 :(得分:3)
哦,这很容易! Stack :: pop()方法不会返回您要分配给char属性的任何内容(这就是为什么void的原因)。您需要使用myStack.top()来获取值,然后像这样调用myStack.pop():
nodePntr->data = myStack.top();
myStack.pop();
nodePntr = nodePntr->pntr;