作者chchwy (mat)
看板NTUE-CS100
标题Re: [课业] 程设作业
时间Tue Mar 25 01:38:12 2008
到目前为止好像不错,但是来想个问题
假设stack已经空了,使用者还继续呼叫pop,那会发生什麽状况?
例如这样:目前index已经是-1了,继续呼叫pop()
执行 return data[top--] 这句等同执行 return data[-1]
但是根本就没有data[-1]这东西呀?
违规存取记忆体,通常程式就会当掉,被作业系统强制关闭。
( ps. 我最近帮不少人抓bug,compile都会过,但是run起来就当掉。
这种错误八成都是array超出范围。)
所以要在每次pop之前,应该要设个关卡检查,安全状况下才给pop
===============================
int myStack::pop(){
if(top>-1) //top大於-1,表示stack里有东西。
return data[top--];
else
cout << "stack is empty!"<< endl;
}
================================
若stack已经空了,就秀个讯息让使用者知道吧
void myStack::push(int e){
// push也同样要检查
// 如果stack满了,那就不应该再继续塞东西罗
// 留给同学写吧
}
--
---- chchwy <批兔个人版> ptt2.cc
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.68.15.109
1F:推 aeolus1215:伟哉 03/25 02:16
※ 编辑: chchwy 来自: 203.68.15.230 (03/25 22:09)