用户堆栈大小

时间:2017-11-03 10:30:13

标签: c++ stack dynamic-memory-allocation

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

我当前的程序获取一组字母或数字,然后以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](在头文件中)。我相信这是解决这个问题的一种非常简单的方法,但我只是没有看到它。

1 个答案:

答案 0 :(得分:1)

您可以使用符合您需要的std::stack<char>

但是,如果您必须或想要自己动手,则应使buf成为指向char的指针,并根据需要使用new[]delete[]分配和释放内存。与使用size的代码中执行的操作类似。使用std::vector<char>是一种中间解决方案。

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