佇列的兩種主要操作是: 向佇列中插入新元素和刪除佇列中的元素。 插入操作也叫做入隊, 刪除操作也叫做出隊。 入隊操作在隊尾插入新元素, 出隊操作刪除隊頭的元素。
另外:(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 方法雖然...