여기 내 코드가 있지만 이해할 수없는 한 가지 문제가 있습니다. 스택의 정수를 누를 때마다 나머지 (채워지지 않은 부분) 스택이 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;
}
크기 ... – Jarod42
[OT] 용량과하지 최대 귀하의'print' 표시 요소 : 당신은 돈 ' 존중 규칙 3/5/0. – Jarod42
나는 처음에 쓰레기로 가득 찬 스택과 푸시 후 쓰레기로 가득 찬 채워진 부분을 실행했다. @ Jarod42 맞습니다. 관련 부분을 인쇄하려면 루프를 변경해야합니다. 하지만 코드에서 아무 것도 잘못되었습니다. 그리고 채워지지 않은 부분은 내 컴퓨터에 0을 가지고 있지 않습니다. – nrofis