這是我的第一個數據結構程序。我正在實現一個使用數組的push,pop和initialize函數的簡單堆棧。我得到一個無限循環作爲輸出。你能告訴我這是爲什麼嗎?無限循環棧實現C++
#include<iostream>
using namespace std;
# define SIZE 6
class stack{
public:
void init();
void push(int i);
int pop();
int top;
int stck[SIZE];//bydefault private
};
void stack::init()
{
top=0;
return;
}
void stack::push(int i)
{
if(top==SIZE)
{
cout<<"stack is full";
return;
}
else
{
top=top+1;
stck[top]= i;
return;
}
}
int stack::pop()
{
if(top==0)
{
cout<<"stack is empty. \n";
return 0;
}
else
{
top = top-1;
return(stck[top-1]);
}
}
int main()
{
stack stack1;
stack1.init();
int a;
int m;
while(a!=4)
{
cout<<"1. push 2. pop 3.display 4.exit .\n";
cin>>a;
if(a==1){
cout<< "enter value";
cin>>m;
stack1.push(m);
}
if(a==2)
{
cout<<"popped"<< stack1.pop();
}
if(a==3)
{
for(int k=0; k<=stack1.top;k++)
{
cout<<stack1.stck[k];
}
}
}
}
爲什麼你認爲有無限循環? – Maroun
如果您編寫自己的類,則應該使用私有字段和構造函數。 – tgmath
如果你去公衆場合,你就不會穿髒兮兮的襯衫,所以請在公共場合介紹格式良好的代碼。不鼓勵使用宏的常量,而是使用'const'變量。另外,不鼓勵使用'using namespace std;',否則會導致名稱衝突。 – Flovdis