程式碼在這
https://pastebin.com/vbsc7Pnv
我寫了一個queue測試程式
DEBUG時遇到很奇怪的現象
https://imgur.com/a/Aaq69lo
https://imgur.com/a/taYNpXv
明明只是執行queue[rear++]=input;這行指令
可是front的值竟然更動了
請問這是怎麼一回事
作者:
LPH66 (-6.2598534e+18f)
2019-03-28 18:16:00你超界了, 你的 queue 只有五格但你推了八個數字進去說起來你都有寫 isFull 就拿來用啊啊, 我看到問題了: 當你 dequeue (del) 之後 front 就不是0
作者:
LPH66 (-6.2598534e+18f)
2019-03-28 18:18:00問題應該會發生在 26 行這個 add(1) 時那你就要考慮這個時候東西要存在哪裡, isFull 要怎麼改寫等總之結論還是超界
好的 我等等改寫isFull()看看,那請問front為什麼會在我文中的位置被改值呢照理來說那行是動不到front的
作者:
ecniv (艾克尼夫)
2019-03-28 18:49:0019,20行調換順序試試? 猜是超界而複寫到queue後面的變數
你覺得動不到那是你覺得 就好像你覺得可以超界存取陣列也沒事一樣 你可以試著在Java或C#之類的語言寫看看同樣邏輯的code,包準exception炸到你飛天XD
作者:
LPH66 (-6.2598534e+18f)
2019-03-29 08:51:00會被改到的原因就是超界, 就只是它正好在你超界存取的位置