亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

隊列遍歷的代碼還是有點不清楚

?for?(int?i?=?m_iHead;?i?<?m_iQueueLen?+?m_iHead;?i++)
{
????cout?<<?m_pQueue[i?%?m_iQueueCapacity]?<<?endl;
}

主要是m_iQueueLen + m_iHead和i % m_iQueueCapacity這兩點 求大神講解一下 本人小白

正在回答

1 回答

????假設一種情況,一個m_iQueueCapacity=4的隊列,經過一系列入隊和出對操作,此時m_iHead=3,而m_tail=2,此時在3,0,1位置都有元素。

????此時m_iQueueLen=3。如果是循環是for?(int?i?=?m_iHead;?i?<?m_iQueueLen ;?i++),循環次數m_iQueueLen-m_iHead=0,很明顯循環不能執行。因為我們要循環的次數是m_iQueueLen,也就是3。所以循環次數應該是(m_iQueueLen + m_iHead)-m_iHead=3,也就是i?<?m_iQueueLen?+?m_iHead。

????至于i?%?m_iQueueCapacity,在假設中,我們首先訪問3位置元素,接下要訪問0位置元素了,而i++后此時m_pQueue[i]會訪問4位置元素,而在?m_iQueueCapacity=4隊列里只有0,1,2,3,這幾個位置,所以我們要對i%m_iQueueCapacity取余數,使得我們訪問的位置在m_pQueue[ ]的范圍內,這個余數也是我們訪問完3位置元素的下一個位置0。

????畫一下圖更清楚(這里是順時針隊列)。

????拙見,見笑。

0 回復 有任何疑惑可以回復我~
#1

ziorm 提問者

非常感謝!
2017-06-29 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
數據結構探險—隊列篇
  • 參與學習       110125    人
  • 解答問題       183    個

與現實最為貼近的數據結構-隊列,帶大家進入數據結構的美妙世界

進入課程

隊列遍歷的代碼還是有點不清楚

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號