Javascriptデータ構造とアルゴリズム学習(二)——キュー
13822 ワード
記事の目次列は何ですか? 列の動作 列の実践——ドラムカット 優先キューと補助クラス 行列とは
キュー(Que)——先入先出(FIFO)のデータ構造です.列は列の最後に要素を挿入するだけで、最初に要素を削除します.これはスタック(LIFO)とは構造が違っています.「列に並ぶ」と見られます.
キューの操作列に入る:enqueue 列:dequeue 列ヘッダを表示する:front いいえ、空です.isEmpty 列サイズ:size JSは高級な言語ですので、行列を実現するために、行列を利用してよく実現できます.
説明:0から転送を開始し、3番目のビットに達するごとに、3番目のビットを削除し、最後の原理まで:列を取り出すごとに前のビットを列の最後に置いて、3番目のビットになると削除する.
優先キュー:元素の優先順位によっては、列の要素が異なります.飛行機のように、上級会員が優先的に搭乗します.一般的には、列から削除される要素は、必ず率先して列に入る要素です.ただし、特別な場合は先の約束を守らない場合があります.
キュー(Que)——先入先出(FIFO)のデータ構造です.列は列の最後に要素を挿入するだけで、最初に要素を削除します.これはスタック(LIFO)とは構造が違っています.「列に並ぶ」と見られます.
キューの操作
function Queue(){
var items = [];
this.enqueue = function(item){
items.push(item)
}
this.dequeue = function( ){
return items.shift()
}
this.front = function(){
return items[0]
}
this.isEmpty = function(){
return items.length>0
}
this.size = function(){
return items.length
}
}
行列の実践——太鼓を叩いて花を伝える説明:0から転送を開始し、3番目のビットに達するごとに、3番目のビットを削除し、最後の原理まで:列を取り出すごとに前のビットを列の最後に置いて、3番目のビットになると削除する.
function delevery(names,number){
var queue = new Queue();
for(let i=0;i<names.length;i++){
queue.enqueue(names[i])
}
while(queue.length>1){
for(let i=1;i<number;i++){
queue.enqueue(queue.dequeue())
}
queue.dequeue();
}
console.log(queue.front())
}
var names = ['a','b','c','d','e','f'];
delevery(names,3);
優先キューと補助クラス優先キュー:元素の優先順位によっては、列の要素が異なります.飛行機のように、上級会員が優先的に搭乗します.一般的には、列から削除される要素は、必ず率先して列に入る要素です.ただし、特別な場合は先の約束を守らない場合があります.
function PriorityQueue(){
var items = []
//
var QueueItem = function (name,priority){
this.name = name;
this.priority = priority
}
this.enqueue = function(ele,priority){
var queueItem = new QueueItem(ele,priority);
var added = false;
for(let i=0;i<items.length;i++){
if(queueItem.priority>items[i].priority){
items.splice(i,0,queueItem)
added= true;
break;
}
}
if(!added){
items.push(queueItem)
}
}
this.showQueue = function(){
console.log(items)
}
}
var test = new PriorityQueue();
test.enqueue(' ',5)
test.enqueue(' ',12)
test.showQueue()