class node{
int data;
public:
node *next;
node *prev;
node(int a){data=a; next=NULL; prev=NULL;}
int retrieve(){return data;}
};
class stack{
node *top;
public:
stack(){top=NULL;}
void push(node);
bool empty();
void printall();
};
void stack::push(node a){
if(top==NULL)
top=&a;
else{
top->next=&a;
top->next->prev=top;
top=&a;
}
}
int main(){
stack st;
cout<<st.empty()<<endl;
node k(3);
node j(4);
node h(5);
st.push(k);
st.push(j);
st.push(h);
st.printall();
}
バグはプッシュ機能で発生します。
プッシュ関数のすぐ内側で gdb を使用して top 値をトレースすると、top の値がすぐにノード a に変わります。
メイン関数にはスタック インスタンスが 1 つしかないため、トップが 1 つしかないため、新しい値を割り当てるまで同じ値を保持する必要があります。右?
誰かヒントをくれませんか?
(ところで、すべてを入力する代わりに、コードの前に 4 つのスペースを追加する方法はありますか?)