9cubed
ブログ | Tailwind | Vite | Python | Node.js | Linux | PowerShell | その他 | 将棋ウォーズ | 歌の練習
プログラミング講座

第137回 Queue と Stack について

公開日:2015-04-26
更新日:2019-05-11

1. 概要

独り言によるプログラミング講座、「第137回 Queue と Stack について」です。

値を複数持ちたい場合、配列やリストを使いますが、先に入れた値を先に出したり、後から入れたものを先に出す、などのルールを持たせたものが、キュー(Queue:順番を待つ列) と スタック(Stack:積み重ね) になります。

お店でレジの前に並ぶことがあると思いますが、あれがキュー構造です。最初に列に入った人が、最初に列から出ていきます。時間がかかる処理のリクエストを溜めるのによく使用します。

スタックは、本を上に積み重ねてんでいくような構造で、後に積んだものが、最初に取り出せます。メソッド・関数を呼び出す際に、元の呼び出し元が誰かを保持するために使われています。return した際に呼び出し元に処理が戻れるのは、呼び出し元をスタックに溜めているためです。キューに比べると利用頻度は少ないかもしれません。

2. 動画



3. 動画中に書いたソース

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //★独り言によるプログラミング講座

            //■Queue と Stack について
            /*
            Queue queue = new Queue();

            //値の格納
            queue.Enqueue("abc");
            queue.Enqueue(999);

            //MessageBox.Show(queue.Count.ToString());

            //値の取得(値も削除される)
            object o1 = queue.Dequeue();
            object o2 = queue.Dequeue();

            //先頭は削除されないので、2回とも同じ値になる
            //object o1 = queue.Peek();
            //object o2 = queue.Peek();

            MessageBox.Show(o1.ToString());
            MessageBox.Show(o2.ToString());
            //MessageBox.Show(queue.Count.ToString());
            */

            /*
            Queue<string> queue = new Queue<string>();
            queue.Enqueue("abc");
            queue.Enqueue("999");
            */

            try {
                Stack stack = new Stack();
                stack.Push(1);
                stack.Push(2);
                stack.Push(3);

                MessageBox.Show(stack.Peek().ToString());
                
                object o1 = stack.Pop(); //3
                object o2 = stack.Pop(); //2 
                object o3 = stack.Pop(); //1


                MessageBox.Show(o1.ToString());
                MessageBox.Show(o2.ToString());
                MessageBox.Show(o3.ToString());
            } catch (Exception ex) {
                MessageBox.Show(ex.ToString());
            }

            this.Dispose();
        }
    }
}

YouTube X

新着一覧

  • SCSS のインストールVite
  • Tailwind CSS のプロジェクトの作成Tailwind
  • TypeScriptのプロジェクトの作成Vite
  • Flask のインストールと動作確認Python
  • 簡易Webサーバーの作成Python
  • pipeline で文章の生成Python
  • pipeline で文章の要約Python
  • 音声から文字起こしPython
  • Node.js のインストールNode.js
  • .ps1(PowerShellスクリプト)を実行可能にするPowerShell

アーカイブ

  • 2025/12
  • 2025/11
  • 2025/10
  • 2025/09
  • 2025/08

以前のカテゴリー一覧

  • CakePHP3
  • CentOS7
  • HTML・CSS・JavaScript
  • Haskell
  • JavaScript
  • Kotlin
  • Laravel5
  • PHP
  • Python
  • Ruby
  • RubyOnRails5
  • TypeScript
  • Vue.js
  • Webサーバ講座
  • Webプログラミング講座
  • jQuery
  • linux
  • パソコン講座
  • ブログ
  • プログラミング講座
  • メモ帳作成講座
  • 数学

Copyright © 9cubed. All Rights Reserved.

プライバシーポリシー 利用規約
▲