尝试使用堆栈反向链接列表,但尝试重写数据时仍然遇到问题。当我从堆栈中弹出时,尝试从数据类型void分配一个char。

    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;
    }
}


尝试保存数据时,这是我收到代码错误的行。

nodePntr->data = myStack.pop();

最佳答案

哦,这很容易! Stack :: pop()方法不会返回您要分配给char属性的任何内容(这就是为什么void的原因)。您需要使用myStack.top()来获取值,然后像这样调用myStack.pop():

nodePntr->data = myStack.top();
myStack.pop();
nodePntr = nodePntr->pntr;

关于c++ - 从不兼容类型“void”分配给“char”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55998552/

10-09 19:18