本篇文章將結合《算法》第4版屿良、業(yè)界大牛的博客和自己的理解,具體描述隊列的一些概念惫周,如有錯誤尘惧,請大佬指出。如有侵權递递,請聯(lián)系我刪除喷橙,謝謝。
隊列
1.基本概念
隊列是與棧不太相同的線性結構登舞,它是允許在一端進行插入贰逾,另一端進行刪除的線性表。允許插入的一端稱為隊尾菠秒,通常用一個稱為尾指針(rear)的指針指向隊尾元素疙剑;允許刪除的一端稱為隊頭,通常用一個稱為頭指針(front)的指針指向頭元素的前一個位置践叠。因此言缤,隊列又被稱為“先進先出”的線性表。
2.循環(huán)隊列及其運算
循環(huán)隊列禁灼,顧名思義管挟,就是將隊列存儲空間的最后一個位置繞道第一個位置,形成邏輯上的環(huán)狀空間弄捕,使得線性結構可供隊列循環(huán)使用哮独。
在循環(huán)隊列中,用尾指針指向隊列的尾元素察藐,用頭指針指向頭元素的前一個位置皮璧。所以,從頭指針所指向的后一個位置直到尾指針指向的位置之間所有的元素均為隊列中的元素分飞。當rear=front時悴务,循環(huán)隊列的狀態(tài)有2種:可能是隊列滿,也可能是隊列空。為了區(qū)分這兩種情況讯檐,通常增加一個標志量S羡疗,S值的定義如下:
S = {
0,表示循環(huán)隊列為空
1别洪,表示循環(huán)隊列非空
}
由此判斷隊列空和隊列滿這2種情況:
當S=0時叨恨,循環(huán)隊列為空;
當S=1時挖垛,且front=rear時痒钝,循環(huán)隊列滿。
循環(huán)隊列中計算所有元素總數的方式:
(rear - front + 線性表總長)% 線性表總長
循環(huán)隊列的基本運算有2種:
入隊運算
是指在循環(huán)隊列的隊尾加入一個新元素痢毒。首先隊尾指針進1(即rear=rear+1)送矩,然后在rear指針指向的位置插入新元素。當S=1的時候哪替,循環(huán)隊列滿栋荸,此時進行入隊運算,會發(fā)上"上溢"錯誤凭舶。退隊運算
是指在循環(huán)隊列的排頭位置退出一個元素晌块,并賦給指定的變量。首先頭指針進1(front = front +1)帅霜,然后刪除front指針指向的位置的元素摸袁。當S=0的時候,循環(huán)隊列為空义屏,此時進行退隊運算,會發(fā)生"下溢"錯誤蜂大。
這一篇講的是隊列的基本要點闽铐,內容不多。下一篇講鏈表的一些概念和運算奶浦。敬請期待哦<( ̄︶ ̄)>兄墅。