js資料結構第四彈 佇列

2021-09-18 00:00:04 字數 2208 閱讀 3381

佇列的兩種主要操作是: 向佇列中插入新元素和刪除佇列中的元素。 插入操作也叫做入隊, 刪除操作也叫做出隊。 入隊操作在隊尾插入新元素, 出隊操作刪除隊頭的元素。

另外:(1)讀取隊頭的元素。 這個操作叫做peek()。 該操作返回隊頭元素, 但不把它從佇列中刪除。

(2)佇列中儲存了多少元素,可以使用length屬性滿足該需求;

(3) 要想清空佇列中的所有元素, 可以使用clear()方法來實現。

原理:陣列的 push() 方法可以在陣列末尾加入元素, shift() 方法則可刪除陣列的第乙個元素。

//建構函式

function queue()

// enqueue() 方法向隊尾新增乙個元素:

function enqueue(element)

// dequeue() 方法刪除隊首的元素:

function dequeue()

//讀取隊首和隊尾的元素

function front()

function back()

// tostring() 方法顯示佇列內的所有元素:

function tostring()

return retstr;

}//判斷佇列是否為空:

function empty()

else

}

問題:按照自己的性別排成兩隊。 當舞池中有地方空出來時, 選兩個佇列中的第乙個人組成舞伴。 他們身後的人各自向前移動一位, 變成新的隊首。 當一對舞伴邁入舞池時, 主持人會大聲喊出他們的名字。 當一對舞伴走出舞池, 且兩排隊伍中有任意

一隊沒人時, 主持人也會把這個情況告訴大家。

//將舞者存在dancer物件中

function dancer(name, ***)

// trim() 函式除去了每行字串後的空格。

//將每行字串按性別和姓名分成兩部分存入乙個陣列。根據性別將舞者加入不同的佇列。

function getdancers(males, females)

for (var i = 0; i < names.length; ++i)

else }}

//列印結果

function dance(males, females)

print();

}

/*基數排序

* nums :需要排序的陣列

* queues :陣列,裡面元素是佇列

* n :佇列的格式,這裡為10個

* digit :傳入1,則先按個位上的數字排序;傳入10,則按十位上的數字排序

* */

function distribute(nums,queues,n,digit)else if(digit == 10)else

}}function collect(queues,nums)

}}/*測試程式*/

var queues = ;

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

var nums = ;

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

console.log("開始的nums: "+nums);//24,72,90,84,49,69,8,30,50,0

distribute(nums,queues,10,1);

collect(queues,nums);

distribute(nums,queues,10,10);

collect(queues,nums);

console.log("排序後的nums: "+nums);//0,8,24,30,49,50,69,72,84,90

優先佇列:在一般情況下, 從佇列中刪除的元素, 一定是率先入隊的元素。 但是也有一些使用佇列的應用, 在刪除元素時不必遵守先進先出的約定。

舉例:優先碼的值最小的元素優先順序最高。 新的 dequeue() 方法遍歷佇列的底層儲存陣列, 從中找出優先碼最低的元素, 然後使用陣列的 splice() 方法刪除優先順序最高的元素。

function dequeue() 

} return this.datastore.splice(priority,1);

}

js資料結構 佇列

佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為...

js 資料結構學習第四日 佇列的實現

佇列是遵循先進先出的一組有序的項 在佇列尾部新增新元素,並從頂部移除元素,最常見的例子就是排隊。建立佇列function queue 從佇列頭部移除元素 this.dequeue function 返回佇列最前面的元素 this.front function 判斷佇列是否為空 this.isempt...

js資料結構第三彈 棧

特點 棧是一種高效的資料結構,因為資料只能在棧頂新增或刪除。棧被稱為一種 先出 lifo,last in first out 的資料結構。主要操作 對棧的兩種主要操作是將乙個元素壓入棧和將乙個元素彈出棧。入棧使用push 方法,出棧使用pop 方法。另乙個常用的操作是預覽棧頂的元素。pop 方法雖然...