精華區beta NTUE-CS100 關於我們 聯絡資訊
到目前為止好像不錯,但是來想個問題 假設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
aeolus1215:偉哉 03/25 02:16
※ 編輯: chchwy 來自: 203.68.15.230 (03/25 22:09)