按用户划分的堆栈大小

stack size by user

本文关键字:堆栈 用户 划分      更新时间:2023-10-16

我正在尝试根据用户输入的字母数动态分配堆栈。

我当前的程序获取一组字母或数字,然后以FILO顺序(因此相反的顺序)输出它们。

例如,如果用户输入 123,它将堆栈的大小设置为 3 并返回 321。

这是我的标题(类)

class CharStack {
    enum {size = 100};      //size of stack. big enough to receive long letters.
    int top;                //top pointer 
    char buf[size];         //stack's size
    public:
    CharStack()             //constructor
        {top = size;}
    bool chkEmpty() const   //true if no data in stack
        {return top == size;}
    bool chkFull() const    //true if stack is full
        {return !top;}
    bool push(char ch);     //pop data from stack
    char pop();
};

这是我的主要。

int main()  {
    CharStack chStack;              //A stack with 100
    char str[100];
    int *size;
    cout << "input letter or numbers:";
    cin >> str;
    size = new int[strlen(str)+1];  //count number of letters.

等等...

我认为我需要做的就是设置size (in main) = buf[size](在头文件中)。 我相信有一个非常简单的方法可以解决这个问题,但我只是没有看到它。

您可以使用std::stack<char>它做你需要的。

但是,如果您必须或想自己做,您应该buf指向 char 的指针,并根据需要使用 new[]delete[] 分配和释放内存。 类似于在代码中使用 size 执行的操作。 使用std::vector<char>是一个介于两者之间的解决方案。

可以通过构造函数或 setSize() 函数将大小传递给类。