[データ構造]スタックとキューJavaScript
スタックとキュー
効率的なプログラミングを行うためには,資料構造概念が非常に必要であると考えられる.
スタックとキューはJavaScriptでよく使われる概念です.
通常、Arrayメソッドpush
、pop
、unshift
などが使用され、これはスタックおよびキューにおいても適用される.
よく理解してから行きましょう.
スタック
スタッキング
スタックは本のようにデータを蓄積する構造です.
プログラミングの観点から,データ(資料)の入出力は一方向の構造である.
最上位:現在のデータ基準の最上位
ex)上図判断によるx->1->2->1
info)すべてのデータ演算は
Top
で完了する.Push:データを追加する演算.
ex)上部で積み重ね続ける構造(1->2->3->...)
info)JS内蔵メソッドプッシュなどの機能.
Pop:データを削除する演算.
ex)topを基準としてデータを1つずつ削除する.(3->2->1->x)
info)JS内蔵メソッドPopのような機能です.
JavaScriptでの実装
class Stack {
constructor(){
this.storage = {};
this.top = 0;
}
size() {
return this.top
}
push(element){
this.top ++;
return (this.storage[this.top] = element);
}
pop(){
if(this.top != 0){
let data = this.storage[this.top];
delete this.storage[this.top];
this.top--;
return data;
}
}
}
var test= new Stack
test.push('가')//storage: { '1': '가'}
test.push('나')//storage: { '1': '가', '2': '나' }
test//storage: { '1': '가', '2': '나' },
test.pop()//storage: { '1': '가'}
test.size()//1
後入線出口グループ.後押しの「私」は先にポップアップする仕組みです.
キュー
Queue=並びます.
キューは、データの入力と出力を1つの場所で管理するスタックとは異なります.
In&Outをそれぞれ実行します.
JavaScriptでの実装
class Queue {
constructor(){
this.storage ={};
this.front = 0;
this.rear = 0;
}
size(){
return this.front;
}
enqueue(element){
if( this.front === 0){
this.storage[this.front] = element;
this.front++;
return
}
this.front++;
let values = Object.values(this.storage)
values.unshift(element);
this.storage = {};
for(let z = values.length -1; z>=0; z--){
this.storage[z] = values[z]
}
}
dequeue() {
if(this.front !== 0){
let data = this.storage[this.front - 1];
delete this.storage[this.front -1];
this.front --;
return data;
}
}
}
var test2 = new Queue
test2.enqueue('가')//storage: { '0': '가'}
test2
test2.enqueue('나')//storage: { '0': '나', '1': '가' }
test2
test2.dequeue()//storage: { '0': '나'}
test2
最初に入力したデータ「すでに」は、削除操作時に消去されます.Reference
この問題について([データ構造]スタックとキューJavaScript), 我々は、より多くの情報をここで見つけました https://velog.io/@hello1358/자료구조스택-큐-in-Javascriptテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol