我正在尝试根据用户输入的字母数量动态分配堆栈。
我当前的程序获取一组字母或数字,然后以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]
(在头文件中)。我相信这是解决这个问题的一种非常简单的方法,但我只是没有看到它。
答案 0 :(得分:1)
您可以使用符合您需要的std::stack<char>
。
但是,如果您必须或想要自己动手,则应使buf
成为指向char的指针,并根据需要使用new[]
和delete[]
分配和释放内存。与使用size
的代码中执行的操作类似。使用std::vector<char>
是一种中间解决方案。
您可以通过构造函数或setSize()
函数将大小传递给您的类。