按用户划分的堆栈大小
stack size by user
我正在尝试根据用户输入的字母数动态分配堆栈。
我当前的程序获取一组字母或数字,然后以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()
函数将大小传递给类。
相关文章:
- C++如何通过用户输入删除列表元素
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 使用用户定义函数的字符串反转
- 用户定义函数中的指针和输入
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 如何只允许用户输入正整数
- C++如何计算用户输入的数字中的偶数位数
- 通过for循环使用用户输入填充列表
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 在C++中,我如何接受不同于同一行的用户输入
- 如何将 Boost::ASIO 与用户空间网络堆栈集成?
- 按用户划分的堆栈大小
- 我如何修改我的C 程序以显示用户输入的单词,并使用堆栈向后
- 防止用户脚本造成堆栈溢出
- 用户定义类对象的堆栈分配
- 布尔计算器如何使用堆栈检查用户输入
- 在使用内存方面,用户定义的堆栈和内置的堆栈有什么区别?
- 反向工程OSX用户诊断报告堆栈跟踪