這裏是我的代碼,但有一個我無法理解的問題:每次當我在我的堆棧中推入一個整數時,剩餘的(未填充部分)堆棧將被0
值填充。請解釋我的錯誤。基於數組的棧實現
#include <iostream>
using namespace std;
class Stack
{
private:
int* base;
int max_size;
int top;
public:
Stack(int size = 100)
{
base = new int[size];
max_size = size;
top = -1;
}
~Stack()
{
delete[] base;
}
bool empty() const
{
return top == -1;
}
bool full() const
{
return top == max_size - 1;
}
void push(int element)
{
if (top == max_size-1) {
cout<< "Stack overflow" << endl;
return;
}
base[++top] = element;
}
void pop()
{
if(top == -1) {
cout << "Stack underflow" << endl;
return;
}
top--;
}
int & read_top() const
{
return base[top];
}
void print()
{
int i = 0 ;
cout << "Stack is ";
while(i <= max_size)
{
cout << base[i] <<" ";
i++;
}
cout << endl;
}
};
int main()
{
Stack first(10);
for(int i = 0; i<=5; i++)
{
first.push(i*i);
first.print();
}
return 0;
}
你'print'顯示元素直至容量,而不是大小... – Jarod42
[OT]:你不要」尊重3/5/0規則。 – Jarod42
我跑了你的代碼,開始時堆滿了垃圾,還有未填充的部分在推後被垃圾填滿。 @ Jarod42是對的,你應該改變你的循環打印相關部分。但是你的代碼沒有問題,並且未填充的部分在我的機器中沒有零... – nrofis