程式码在这
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会被改到的原因就是超界, 就只是它正好在你超界存取的位置