我编写了一个小型C ++程序,它使用C ++中的linkedLists实现堆栈的基本操作。在测试该程序时,我观察到cout的一个奇怪问题。 在主要功能中,
int main()
{
stack *MainStack=new stack();
MainStack->push(1);
MainStack->push(2);
std::cout<<MainStack->pop();
std::cout<<MainStack->pop();
}
输出为21 当主要功能是
时int main()
{
stack *MainStack=new stack();
MainStack->push(1);
MainStack->push(2);
std::cout<<MainStack->pop()<<MainStack->pop();
}
输出为12。
该错误的原因是什么? 任何人都可以告诉我这个错误的原因。
我的C ++程序
#include<iostream>
class stack
{
int value;
stack *next;
public:
stack()
{
value=0;
next=NULL;
}
stack(int data)
{
value=data;
next=NULL;
}
void push(int data)
{
stack *temp;
temp=next;
next=new stack(data);
next->next=temp;
value++;
}
int pop()
{
int data;
if(next==NULL)
{
std::cout<<"Underflow\n";
return -1;
}
stack *temp=next;
next=next->next;
data=temp->value;
delete(temp);
value--;
return data;
}
int top()
{
return next->value;
}
bool isStackEmpty()
{
if(next==NULL)
{
return true;
}
else
{
return false;
}
}
int getCount()
{
return value;
}
};
int main()
{
stack *MainStack=new stack();
MainStack->push(1);
MainStack->push(2);
std::cout<<MainStack->pop()<<MainStack->pop();
}