推 aeolus1215:偉哉 03/25 02:16
※ 編輯: chchwy 來自: 203.68.15.230 (03/25 22:09)
到目前為止好像不錯,但是來想個問題
假設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