C++ 中的字符栈实现有问题吗?
Issues with a char stack implementation in c++?
我想制作一个字符堆栈实现,但我认为它有问题,因为当我尝试将它用于我的其他功能时,它不工作,库堆栈工作。你能帮忙找个问题吗:
using namespace std;
Stack::Stack(int size)
{
arr = new char[size];
capacity = size;
t = -1;
}
int Stack::size()
{
return (t + 1);
}
Stack::~Stack()
{
delete[] arr;
}
bool Stack::empty()
{
return size()==0;
}
void Stack::push(char x)
{
if (size()==capacity) {
cout<<"Push to full stack";
arr[++t]=x;
}
}
char Stack::pop()
{
if (empty()) {
cout<<"Pop from empty stack";
--t;
}
return 0;
}
char Stack::top()
{
if (!empty())
return arr[t];
else
cout<<"Top of the stack is empty";
return 0;
}
我想制作一个字符堆栈实现,但我认为它有问题,因为当我尝试将它用于我的其他功能时,它不工作,库堆栈工作。能不能帮忙找个问题:
提前致谢!
我认为您需要对 push
和 pop
函数进行一些更改才能使 Stack
正常工作
在 push
中,您应该将 arr[++t]=x;
放在 if
语句的外面而不是里面,因为如果当前大小小于其容量而不是等于
在 pop
中,您应该将 arr[--t];
放在 if
语句之外,而不是放在里面,因为您要删除和 return 最后一个值如果堆栈不为空,则在数组中。当它为空时,您应该考虑 return 一个默认字符,例如空终止符 [=21=]
。您还应该使用 arr[t--]
而不是 arr[--t]
因为最后一个元素当前位于 t
因此您希望它在减少其值之前评估 arr[t]
(t--
)
void Stack::push(char x)
{
if (size()==capacity) {
cout<<"Push to full stack";
return;
}
arr[++t]=x;
}
char Stack::pop()
{
if (empty()) {
cout<<"Pop from empty stack";
return '[=10=]';
}
return arr[t--];
}
我想制作一个字符堆栈实现,但我认为它有问题,因为当我尝试将它用于我的其他功能时,它不工作,库堆栈工作。你能帮忙找个问题吗:
using namespace std;
Stack::Stack(int size)
{
arr = new char[size];
capacity = size;
t = -1;
}
int Stack::size()
{
return (t + 1);
}
Stack::~Stack()
{
delete[] arr;
}
bool Stack::empty()
{
return size()==0;
}
void Stack::push(char x)
{
if (size()==capacity) {
cout<<"Push to full stack";
arr[++t]=x;
}
}
char Stack::pop()
{
if (empty()) {
cout<<"Pop from empty stack";
--t;
}
return 0;
}
char Stack::top()
{
if (!empty())
return arr[t];
else
cout<<"Top of the stack is empty";
return 0;
}
我想制作一个字符堆栈实现,但我认为它有问题,因为当我尝试将它用于我的其他功能时,它不工作,库堆栈工作。能不能帮忙找个问题: 提前致谢!
我认为您需要对 push
和 pop
函数进行一些更改才能使 Stack
正常工作
在
push
中,您应该将arr[++t]=x;
放在if
语句的外面而不是里面,因为如果当前大小小于其容量而不是等于在
pop
中,您应该将arr[--t];
放在if
语句之外,而不是放在里面,因为您要删除和 return 最后一个值如果堆栈不为空,则在数组中。当它为空时,您应该考虑 return 一个默认字符,例如空终止符[=21=]
。您还应该使用arr[t--]
而不是arr[--t]
因为最后一个元素当前位于t
因此您希望它在减少其值之前评估arr[t]
(t--
)
void Stack::push(char x)
{
if (size()==capacity) {
cout<<"Push to full stack";
return;
}
arr[++t]=x;
}
char Stack::pop()
{
if (empty()) {
cout<<"Pop from empty stack";
return '[=10=]';
}
return arr[t--];
}