关于#c++#的问题,如何解决?

img

这个有人会做吗,用c++,本人对c++链表和类不太熟练,希望尽快出结果,感谢

参考GPT和自己的思路:以下是可能符合题目要求的C++代码:

#include "stdafx.h"
#include <iostream>
#include <cstring>
#include <string>


using namespace std;

struct NODE {
    char elem;
    NODE* next;
};

class LinkedList {
private:
    NODE* head;
public:
    LinkedList() {  // 无参数构造函数
        head = nullptr;
    }

    LinkedList(char c) {  // 带参构造函数,创建一个只有头节点的链表
        head = new NODE;
        head->elem = c;
        head->next = nullptr;
    }

    void addNode(char c) {  // 在链表头之前添加节点
        NODE* newNode = new NODE;
        newNode->elem = c;
        newNode->next = head;
        head = newNode;
    }

    void deleteHeadNode() {  // 删除链表头节点
        if (head != nullptr) {
            NODE* temp = head;
            head = head->next;
            delete temp;
        }
    }

    bool isEmpty() {  // 判断链表是否为空
        return head == nullptr;
    }

    void reverse() {  // 链表首尾倒置
        NODE* prev = nullptr;
        NODE* curr = head;
        NODE* next = nullptr;
        while (curr != nullptr) {
            next = curr->next;
            curr->next = prev;
            prev = curr;
            curr = next;
        }
        head = prev;
    }

    NODE* getHeadNode() {  // 获得链表头节点指针
        return head;
    }
};

class Stack {
private:
    LinkedList list;
public:
    void push(char c) {  // 压栈函数
        list.addNode(c);
    }

    char pop() {  // 出栈函数,获得栈顶数据
        NODE* node = list.getHeadNode();
        char c = node->elem;
        list.deleteHeadNode();
        return c;
    }

    void printStack() {  // 输出栈中所有数据
        NODE* curr = list.getHeadNode();
        while (curr != nullptr) {
            cout << curr->elem << " ";
            curr = curr->next;
        }
        cout << endl;
    }
    bool isEmpty() {
        return list.isEmpty();
    }
};

int main() {
    string s;

    getline(cin, s);
    Stack stack;
    for (int i = 0; i < s.length(); i++) {
        stack.push(s[i]);
    }
    while (!stack.isEmpty()) {
        cout << stack.pop();
    }
    cout << endl;
    return 0;
}

在本程序中,链表类 LinkedList 中的每个成员函数都是根据题目要求实现的。类 Stack 是基于链表类 LinkedList 实现的,它具有压栈、出栈和输出栈中所有数据的功能。主函数读入一个字符串并逐个压栈,然后逐个出栈输出。

这就是定义类,这些原样书上就有