[英]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
語句外部而不是內部,因為您希望向arr
添加值
在pop
,你應該放arr[--t];
如果堆棧不為空, if
在if
語句之外而不是在內部,因為您要刪除並返回數組中的最后一個值。 當它為空時,您應該考慮返回一個默認字符,例如空終止符\\0
。 您還應該使用arr[t--]
而不是arr[--t]
因為最后一個元素當前位於t
所以您希望它在減少其值( t--
)之前評估arr[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 '\0';
}
return arr[t--];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.