<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>devkuma – Stack</title>
    <link>https://www.devkuma.com/jp/tags/stack/</link>
    <image>
      <url>https://www.devkuma.com/jp/tags/stack/logo/180x180.jpg</url>
      <title>Stack</title>
      <link>https://www.devkuma.com/jp/tags/stack/</link>
    </image>
    <description>Recent content in Stack on devkuma</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>jp</language>
    <managingEditor>kc@example.com (kc kim)</managingEditor>
    <webMaster>kc@example.com (kc kim)</webMaster>
    <copyright>The devkuma</copyright>
    
	  <atom:link href="https://www.devkuma.com/jp/tags/stack/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>スタック(Stack)データ構造の説明</title>
      <link>https://www.devkuma.com/jp/docs/data-structure/stack/</link>
      <pubDate>Sun, 10 Apr 2022 01:49:00 +0900</pubDate>
      <author>kc@example.com (kc kim)</author>
      <guid>https://www.devkuma.com/jp/docs/data-structure/stack/</guid>
      <description>
        
        
        &lt;h2 id=&#34;スタックstackの概念&#34;&gt;スタック(Stack)の概念&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;スタック(stack)は積み上げた山を意味する。&lt;/li&gt;
&lt;li&gt;一方の端からだけデータを入れたり取り出したりできる、後入れ先出し(LIFO: Last In First Out)形式のデータ構造である。
&lt;ul&gt;
&lt;li&gt;最も最近入ったデータが最初に出る。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;スタックの構造&#34;&gt;スタックの構造&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;スタック上端: top&lt;/li&gt;
&lt;li&gt;スタック下端: 不要&lt;/li&gt;
&lt;li&gt;要素、項目&lt;/li&gt;
&lt;li&gt;挿入/削除演算&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/data-structure/stack-1.png&#34; alt=&#34;Stack&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;スタックstackの演算&#34;&gt;スタック(Stack)の演算&lt;/h2&gt;
&lt;p&gt;スタック(Stack)はLIFO(Last In First Out)に従う。つまり、最も最近スタックに追加した項目が、最初に削除される項目である。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;push(x): 与えられた要素xをスタックの一番上に追加する。&lt;/li&gt;
&lt;li&gt;pop(): スタックが空でなければ、一番上の要素を削除して返す。&lt;/li&gt;
&lt;li&gt;isEmpty(): スタックが空なら真(true)、そうでなければ偽(false)を返す。&lt;/li&gt;
&lt;li&gt;peek(): スタックが空でなければ、一番上の要素を削除せずに返す。&lt;/li&gt;
&lt;li&gt;isFull(): スタックが満杯なら真(true)、そうでなければ偽(false)を返す。&lt;/li&gt;
&lt;li&gt;size(): スタック内のすべての要素数を返す。&lt;/li&gt;
&lt;li&gt;display(): スタック内のすべての要素を出力する。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;スタックstackの用途&#34;&gt;スタック(Stack)の用途&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;関数呼び出し&lt;/li&gt;
&lt;li&gt;再帰アルゴリズムを使う場合、スタックが有用である。
&lt;ul&gt;
&lt;li&gt;再帰アルゴリズム
&lt;ul&gt;
&lt;li&gt;再帰的に関数を呼び出す必要がある場合、一時データをスタックに入れる。&lt;/li&gt;
&lt;li&gt;再帰関数から戻ってバックトラック(backtrack)するときは、スタックに入れておいた一時データを取り出す必要がある。&lt;/li&gt;
&lt;li&gt;スタックは、この一連の動作を直感的に可能にする。&lt;/li&gt;
&lt;li&gt;また、スタックは再帰アルゴリズムを反復形式(iterative)で実装できるようにする。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Webブラウザの履歴(戻る)&lt;/li&gt;
&lt;li&gt;元に戻す(undo)&lt;/li&gt;
&lt;li&gt;逆順文字列の作成&lt;/li&gt;
&lt;li&gt;式の括弧検査(演算子優先順位表現のための括弧検査)
&lt;ul&gt;
&lt;li&gt;例: 正しい括弧文字列(VPS, Valid Parenthesis String)の判定&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;計算機(後置記法計算)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://www.devkuma.com/docs/data-structure/stack-2.png&#34; alt=&#34;スタック(Stack)の使用例&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gmlwjd9405.github.io/2018/08/03/data-structure-stack.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;資料構造 | スタック(Stack)とは&lt;i class=&#34;fas fa-external-link-alt&#34;&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
      
      <category>Data Structure</category>
      
      <category>Stack</category>
      
    </item>
    
  </channel>
</rss>
