怎么我写的栈溢出处理不起作用?

KID_coder 2010-04-08 08:56:19

//pop部分函数
template <class Type>
Type LinkStack<Type>::PopStack()
{
Type info(0);
Node<Type> * PopNode;

if (!IsEmpty())
{
PopNode = top;
top = top->next;
info = PopNode->element;
delete PopNode;
PopNode = NULL;
}
else
{
cout << "OVERFLOW!\n" << endl;
exit(1);
}
return info;
}
//main函数
void main()
{
int data;
LinkStack<int> MyStack;
for (int i(0); i < 2; i++ )
{
cin >> data;
MyStack.PushStack(data);
}
cout << MyStack.GetTop() << endl;
for (i = 0; i < 3; i++ )
{
data = MyStack.PopStack();
cout << data << " " << flush;
}
cout << endl;


}

当溢出时~~并没有提示“OVERFLOW”,直接内存出错了~~怎么回事~~
偶菜鸟,望高手赐教
...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
happynxy 2010-04-09
  • 打赏
  • 举报
回复
不知道你压栈的时候有没有元素的next置空,也不知道你是通过什么来判断IsEmpty的?如果通过StackSize,我倒没看到在pop时候你把StackSize-1
babyvox1999 2010-04-09
  • 打赏
  • 举报
回复
OVERFLOW 用于压栈比较合适。。。
selooloo 2010-04-09
  • 打赏
  • 举报
回复
你这个是出栈吧,怎么会溢出呢,你的栈空的时候才会overflow
linyongzuo 2010-04-09
  • 打赏
  • 举报
回复

else
{
cout << "OVERFLOW!\n" << endl;
exit(1); //你把这句去掉
}

微网网络 2010-04-09
  • 打赏
  • 举报
回复
if (!IsEmpty())
{
PopNode = top;
top = top->next;
info = PopNode->element;
delete PopNode;
PopNode = NULL;
}
当不是空的是有做这个操作。如果是空的时候就ESle操作。

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧