我如何转换一个基于动态的,基于指针的int堆栈,以便将其打印成字符串
How do I convert a dynamic, pointer-based int stack so it prints out as a string?
我通过编写一个动态的,基于指针的堆栈来创建C 中的反向抛光图数计算器,但是我在Mystack类中使用ToString方法遇到麻烦。
这是我的代码应该如何工作的一些背景:
方法描述:
-
constructor
:初始化对象,设置必要的内存。 -
destructor
:释放可能需要通过对象释放的任何内存。 -
clear()
:清空堆栈。 -
pop()
:如果不是空的,则删除并返回堆栈上的最高值。如果堆栈试图弹出时堆栈为空,则会引发异常。选择任何例外。 -
push(int)
:接受整数是唯一的参数,如果有足够的内存,将其推到堆栈上。 -
size()
:返回堆栈的大小作为整数。 -
toString()
:返回堆栈的字符串表示。例如,如果堆栈包含8, 3, 2, 5
,顶部的8
,则将返回[8, 3, 2, 5]
的格式,就像这样。
计算器将需要支持以下操作:
-
+
:加法 -
-
:减法 -
*
:乘法 -
/
:division -
%
:模量 -
?
:使用ToString((方法将堆栈的当前内容打印到屏幕上。 -
^
:弹出堆栈顶部并仅显示弹出的值。 -
!
:退出计算器。
计算器将不断读取输入直到!输入。它可以将任何数量的令牌读取为输入(请参见下文(。如果堆栈中没有足够的整数无法执行计算,则应显示#Not enough arguments.
。如果输入了整数或受支持的操作以外的其他内容,则应显示错误消息#Invalid input.
,而不会中断特定输入行的其余操作。
我在ToString方法上遇到了麻烦。如何将INT堆栈转换为字符串?
我的代码:
// main.cpp
// practice2
#include <iostream>
#include <list>
#include <string>
#include <algorithm>
#include <stack>
using namespace std;
struct Node
{
int data;
Node *next;
};
class MyStack
{
private:
Node *top;
public:
MyStack();
~MyStack();
void clear();
void push(int);
int pop();
int size();
string toString();
bool isEmpty();
};
MyStack::MyStack()
{
top = NULL;
};
MyStack::~MyStack()
{
while(!isEmpty())
{
pop();
}
};
void MyStack::push(int d)
{
Node *temp = new Node;
temp->data = d;
temp->next = top;
top = temp;
}
int MyStack::pop()
{
if(!isEmpty())
{
int value = top->data;
Node *oldtop = top;
top = oldtop->next;
delete oldtop;
return value;
} else
{
cout << "stack is empty"; //throw exception
exit(1);
}
}
string MyStack::toString()
{
//redo later
};
bool MyStack::isEmpty()
{
return (top == NULL);
}
int main()
{
MyStack *s = new MyStack();
s->push(8);
s->push(3);
s->push(2);
s->push(5);
delete s;
return 0;
}
预期输出:
toString()
:返回堆栈的字符串表示形式。例如,如果堆栈包含顶部的8
的8, 3, 2, 5
,则将返回[8, 3, 2, 5]
,格式如下。
之类的东西
string MyStack::toString()
{
string result = "[";
bool needs_comma = false;
for (Node* temp = top; temp != nullptr; temp = temp->next) {
if (needs_comma) result += ", ";
needs_comma = true;
result += std::to_string(temp->data);
}
result += "]";
return result;
};
应该做技巧。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- int(c) 和 c-'0' 之间的区别。C++
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- 我的 int main() 中出现堆栈溢出错误
- 将大双精度转换为无符号 int 期间堆栈损坏
- 我如何转换一个基于动态的,基于指针的int堆栈,以便将其打印成字符串
- <int> 在不破坏堆栈的情况下获取 C++ 中的堆栈总和
- 尝试使用堆栈创建队列.为什么我会遇到int转换错误的空白
- 如何在不使用堆栈或数组的情况下从INT中提取每个数字?(C )
- 堆栈(int = 10),这个语法是什么意思(C++)
- 关于运行良好的堆栈RPN程序上的char/int
- C++ 堆栈泛型类,int 变量将 32765 作为值而不是 1
- 在 C++ 中实现 int 堆栈
- 在 c++ 中 int 数组周围堆栈损坏错误
- 在c++中添加int数组时,试图找出堆栈损坏的问题
- 在堆栈<int>上使用 std::max_element
- 如何将int转换为const int以在堆栈上分配数组大小
- (C++内存管理)如果我们有一个 int x = 1234,并且 int &y = x...那么堆栈上 y 的地址是什么?