Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

javascriptでスタックとキューを書く

最初に

まずはじめにスタックとキューについて説明します。
スタックというものは後にいれたものを先に取り出すことです。
キューは先にいれたものを先に取り出すことです。

スタックとキューのやり方

スタック

main.js
let arr = [];
arr.push(1);
arr.push(2);
arr.push(3);
arr.push(4);

//[1,2,3,4]

console.log(arr.pop()); //4
console.log(arr.pop()); //3
console.log(arr.pop()); //2
console.log(arr.pop()); //1

スタックではpushメソッドとpopメソッドを使います。
push()は配列の最後に引数に入ってるものを格納するメソッドで,popメソッドは配列の最後にある物を取り出すメソッドです。

まず最初に変数arrのところで配列を宣言します。
そのあとにpush()で引数に入っている数字を格納していっています。
次にpopメソッドで最後のほうから取り出してそれをconsole.logで出力しています。

キュー

main.js
let arr = [];
arr.push(1);
arr.push(2);
arr.push(3);
arr.push(4);

//[1,2,3,4]

console.log(arr.shift()); //1
console.log(arr.shift()); //2
console.log(arr.shift()); //3
console.log(arr.shift()); //4

キューではpushメソッドとshiftメソッドを使います。
shift()というものは配列の最初にあるものを取り出すメソッドです。

配列を宣言し、pushで格納します。
そのあとshift()で最初にいれたものを取り出すという感じです。

破壊的なメソッド

配列などのオブジェクト(ここではarr)に変更などするとそれに影響が及ぶことです。
最初は空だったarrもpush()により格納されて変更されました。
shift()やpop()も破壊的なメソッドです。
わかりやすいようにコードを書きました。スタックを例に。

main.js
let arr = [];
arr.push(1);
arr.push(2);
arr.push(3);
arr.push(4);
//[1,2,3,4]

arr.pop() //4
//ここでarrの中身を見てみます。
console.log(arr); // [1,2,3]

最初は[1,2,3,4],pop()で4を取り出してみたところ、arrの中身は[1,2,3]になりました。
実は取り出したと同時に削除してしまうんですね...
shiftメソッドも同じように配列の先頭を取り出すと同時に削除してしまいます。
shift,pop,pushメソッド以外にもたくさんの破壊的なメソッドがあるので気を付けて使わないといけないなと思いました。

終わりに

アルゴリズムとデータ構造を勉強したのでそのアウトプットのために書きました。
参考になったらありがたいです。

yuuki3
web系エンジニア(フロントエンド)を目指してます。マインクラフトが大好きで最近はリソースパックを作って遊んでます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away