軟考《軟件設計師教程》上講隊列的部分,存在一點疑問。我對隊列的理解:在空隊列時,front=rear=null,這時兩個指針指向最下面的線沒有問題,在入隊1個元素后,front不變,仍然為null,rear+1,此時應該指向“0”這個存儲單元。在圖b中,入隊3個元素,則rear應該指向“2”這個存儲單元,但圖B指向的卻是“3”。這時怎么回事呢?另外,隊列的頭指針和尾指針,指針不應該是指向存儲單元的嗎?圖上的指針都指在分隔線上,這個分隔線表示什么意思?。?
1 回答

慕仙森
TA貢獻1827條經驗 獲得超8個贊
意思能明白就行,圖就甭深究了。我猜圖上想表達的意思,是兩個指針都存儲數組下標,用指向分割線來代表-1,所以在圖b中三個元素入隊的情況下,Q.front畫在了分割線上,表示隊列頭依然在原始位置,而Q.rear直接指向的是下一空單元。最后隊滿時,Q.rear也是指向了分割線的,表示(順序)隊列里已經沒有新的剩余空間了,所以同樣也是-1。
由1,我覺得看你怎么對兩個指針定義了,如果隊首指針指向的是首元素、隊尾指針指向的是尾元素,那么1個數據元素入隊以后,它們應該都指向下標為0的存儲單元才對;而如果想讓隊首指向null代表原始狀態,隊尾指向尾元素,那就是按你那種算法跑。這個依賴于你的實際定義,算法不一樣沒關系,只要跑的過測試也沒bug就好了。
添加回答
舉報
0/150
提交
取消