第五章 佇列

2021-08-01 04:51:16 字數 2440 閱讀 3302

佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。

棧:後進先出,只允許在棧頂進行插入和刪除。

佇列:先進先出,在隊尾進行插入,在對頭進行刪除。

function

queue

() function

enqueue

(element)

function

dequeue

() function

front

() function

back

() function

tostring

() return string;

}function

count

() function

empty

() else

}

unshift:在陣列最開始插入乙個元素(返回陣列第一位);

shift:刪除陣列第一位

佇列經常用於模擬排隊的人,可以用佇列來模擬跳方塊舞的人。

當男生女生來到舞池,他們按自己的性別排成兩排,當舞池中有地方空出來時,選兩個佇列中的第乙個人組成舞伴。他們身後的人各自向前移動一位,變成新的隊首。當一對舞伴進入舞池時,主持人通報他們的名字。當一對舞伴走出舞池,且兩排佇列中有任意一對沒人時,主持人也會把情況通報給大家。

先將男生女生的名字存在檔案中。

var string=』f allison \n m frank \n m mson \n m clayton \n f chert \n f aurora』; //模擬前來跳舞的人

function

dance

(name,***)//將舞者的姓名和性別存入陣列

var female=new queue();

var male=new queue();

//將所有舞者按照先後順序推入不同性別的佇列

function

getdance

(male,female)

for(var j=0;j<_people.length;j++)

else

}}

//宣布配對結果

function

dance

() }

基數排序(這裡只考慮小於100的數字):

對於 0~99 的數字,基數排序將資料集掃瞄兩次。第一次按個位上的數字進行排序,第二

次按十位上的數字進行排序。每個數字根據對應位上的數值被分在不同的盒子裡。假設有

如下數字:

91, 46, 85, 15, 92, 35, 31, 22

經過基數排序第一次掃瞄之後,數字被分配到如下盒子中:

bin 0:

bin 1: 91, 31

bin 2: 92, 22

bin 3:

bin 4:

bin 5: 85, 15, 35

bin 6: 46

bin 7:

bin 8:

bin 9:

根據盒子的順序,對數字進行第一次排序的結果如下:

91, 31, 92, 22, 85, 15, 35, 46

然後根據十位上的數值再將上次排序的結果分配到不同的盒子中:

bin 0:

bin 1:15

bin 2: 22

bin 3: 31,35

bin 4: 46

bin 5:

bin 6:

bin 7:

bin 8: 85

bin 9: 91,92

最後,將盒子中的數字取出,組成乙個新的列表,該列表即為排好序的數字:

15, 22, 31, 35, 46, 85, 91, 92 

使用佇列代表盒子,我們可以實現這個演算法。主程式:

//使用佇列進行排序

function

distribute

(queue,nums,n,digit)

else}}

function

disparray

(arr)

function

collect

(queue,nums)}}

var queue=,nums=;

for(var i=0;i<10;i++)

disparray(nums);

distribute(queue,nums,10,10);

collect(queue,nums);

disparray(nums);

第五章佇列

佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。queue 類定義和一些測試 function queue 向隊尾新增乙個元素 func...

python第五章 Python學習(第五章)

記錄所有的名片字典 card list defshow menu 顯示資訊 print 50 print 歡迎使用 名片管理系統 v1.0 print print 1.新增名片 print 2.顯示全部 print 3.搜尋名片 print print 0.退出系統 print 50 defnew ...

第五章棧和佇列(棧)

棧 後進先出,常見的快取結構 棧是保證元素後進先出 adt stack stack self 建立空棧 is emplty self 判斷棧是否為空,空時返回true否則返回false push self,elem 壓棧 pop self 彈出 top self 取得最後壓入棧的元素 a 實現 棧的...