課程
/后端開發(fā)
/C++
/數(shù)據(jù)結(jié)構(gòu)探險—隊列篇
插入第一個元素,隊尾指向第二個格子
插入第二個元素,隊尾指向第三個格子
插入第三個元素,隊尾指向第四個格子
這時候隊列就滿了??它不是queue[4]嘛??
2016-12-15
源自:數(shù)據(jù)結(jié)構(gòu)探險—隊列篇 4-1
正在回答
這種插入方法 tail指向第四個格子的時候,隊列不是滿的
這是環(huán)形隊列的一個特點,區(qū)別在于是queue[i++]還是queue[++i]
假如說一開始空隊的時候i是-1 ?那么入隊顯然要queue[(++i)%capacity],出隊要queue[(i++)%capacity]
假如說一開始空隊的時候i是0, ?那么入隊顯然要queue[(i++)%capacity],出隊是先讓i-1 再queue[i%capacity]
這兩種定義的方法都可以,差別是只是個人習慣
在James老師的實例中,他采用的是第一種方法,然后他判斷空和滿的方法不是通過tail來判斷的,而是根據(jù)隊列實際長度len和最大長度capacity來判斷的,每次入隊一個len++,出隊一個len--,這就保證了len的大小就是隊伍中所存在的元素個數(shù),如果len==capacity,顯然這時候就滿了,len==0為空。
我們也在學數(shù)據(jù)結(jié)構(gòu),我覺得慕課的講得比我們上課的內(nèi)容好理解多了。
我們教隊列的時候沒有定義len,用上述兩種定義方法的時候的判空判滿函數(shù)是有所區(qū)別的,寫出來亂亂的,在這邊看到老師定義的這個,覺得清爽多了
舉報
與現(xiàn)實最為貼近的數(shù)據(jù)結(jié)構(gòu)-隊列,帶大家進入數(shù)據(jù)結(jié)構(gòu)的美妙世界
2 回答隊尾指向的位置
2 回答在隊列刪除隊尾的時候
1 回答為什么出隊就是把隊首指向的元素賦值給一個參數(shù)呢,這樣隊列里的那個元素就沒了嗎
1 回答遍歷函數(shù)取余,為什么是對隊列長度而不是隊列容量
3 回答隊列使用的什么軟件???
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-12-16
這種插入方法 tail指向第四個格子的時候,隊列不是滿的
這是環(huán)形隊列的一個特點,區(qū)別在于是queue[i++]還是queue[++i]
假如說一開始空隊的時候i是-1 ?那么入隊顯然要queue[(++i)%capacity],出隊要queue[(i++)%capacity]
假如說一開始空隊的時候i是0, ?那么入隊顯然要queue[(i++)%capacity],出隊是先讓i-1 再queue[i%capacity]
這兩種定義的方法都可以,差別是只是個人習慣
在James老師的實例中,他采用的是第一種方法,然后他判斷空和滿的方法不是通過tail來判斷的,而是根據(jù)隊列實際長度len和最大長度capacity來判斷的,每次入隊一個len++,出隊一個len--,這就保證了len的大小就是隊伍中所存在的元素個數(shù),如果len==capacity,顯然這時候就滿了,len==0為空。
我們也在學數(shù)據(jù)結(jié)構(gòu),我覺得慕課的講得比我們上課的內(nèi)容好理解多了。
我們教隊列的時候沒有定義len,用上述兩種定義方法的時候的判空判滿函數(shù)是有所區(qū)別的,寫出來亂亂的,在這邊看到老師定義的這個,覺得清爽多了