{"data":{"site":{"siteMetadata":{"title":"HOME | blackpudding","subtitle":"고생했어. 오늘도.","copyright":"© All rights reserved.","author":{"name":"William JO","github":"blackpudding96"},"disqusShortname":"blackpudding","url":"https://blackpudding.netlify.com"}},"markdownRemark":{"id":"e4e6cc8d-1e9a-50c7-9989-74818970b5cf","html":"<h1>Queue(큐)</h1>\n<h2>Queue(큐)란?</h2>\n<ul>\n<li>먼저 집어 넣은 데이터가 먼저 나오는 <strong>FIFO(First In First Oout)구조</strong>로 데이터를 저장하는 자료 구조이다; <strong>가장 먼저 en_queue(push)된 값</strong>이 <strong>가장 처음 de_queue(pop)</strong>된다.</li>\n</ul>\n<p><img src=\"/queue_animation-1093184755f30dff7b81fd507208c14b.gif\" alt=\"Queue(큐)\">\n출처<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup></p>\n<h2>Queue(큐) 구현</h2>\n<p>Queue(큐)에는 <strong>선형</strong>과 <strong>환형</strong>이 존재한다. 선형 큐의 <strong>크기가 제한되어 있고 de_queue 연산시 모든 데이터를 한 칸씩 옮겨야 하는 단점</strong>을 보완하여 만들어진 환형 큐이지만, 환형 큐도 <strong>큐의 길이를 유동적으로 늘릴 수 없는 단점</strong>이 있기에 이 포스트에서는 lineked list(연결 리스트)로 queue(큐)를 구현한다.</p>\n<p>Queue(큐) 구현 시 다음의 메소드들은 꼭 필요하다.</p>\n<ol>\n<li><strong>en_queue(data) = 삽입(push)</strong> : data node를 queue에 push(삽입)한다.</li>\n<li><strong>de_queue() = 삭제(pop)</strong> : queue(큐)의 front(head) node를 pop(삭제)하고, 가장 앞에 있는 node를 front(head) node로 지정한다.</li>\n</ol>\n<p>추가적으로 queue가 비었는지 차있는지 확인해주는 is<em>empty()메소드와, front(head) &#x26; rear(tail) node의 data를 반환해주는 get</em>front() &#x26; get_rear()메소드들과 같이, 상황에 맞게 만들어진 사용자 정의 메소드들이 많이 쓰인다.</p>\n<h2>Queue(큐) linked list 구현 코드 (C++)</h2>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;iostream></span></span>\n\ntemplate <span class=\"token operator\">&lt;</span>typename T<span class=\"token operator\">></span>\n<span class=\"token keyword\">struct</span> Node <span class=\"token punctuation\">{</span>\n\tT data<span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">struct</span> Node <span class=\"token operator\">*</span>front<span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">struct</span> Node <span class=\"token operator\">*</span>rear<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\ntemplate <span class=\"token operator\">&lt;</span>typename T<span class=\"token operator\">></span>\nclass Queue <span class=\"token punctuation\">{</span>\nprivate<span class=\"token punctuation\">:</span>\n\tNode<span class=\"token operator\">&lt;</span>T<span class=\"token operator\">></span> <span class=\"token operator\">*</span>head<span class=\"token punctuation\">;</span>\n\tNode<span class=\"token operator\">&lt;</span>T<span class=\"token operator\">></span> <span class=\"token operator\">*</span>tail<span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">int</span> size<span class=\"token punctuation\">;</span>\n\t\npublic<span class=\"token punctuation\">:</span>\n\t<span class=\"token function\">Queue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">:</span> <span class=\"token function\">head</span><span class=\"token punctuation\">(</span>nullptr<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token function\">tail</span><span class=\"token punctuation\">(</span>nullptr<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">,</span> <span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n\t<span class=\"token operator\">~</span><span class=\"token function\">Queue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>this<span class=\"token operator\">-></span>head <span class=\"token operator\">==</span> nullptr<span class=\"token punctuation\">)</span>\n\t\t\t<span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n\t\t\n\t\tNode<span class=\"token operator\">&lt;</span>T<span class=\"token operator\">></span> <span class=\"token operator\">*</span>cur <span class=\"token operator\">=</span> this<span class=\"token operator\">-></span>tail<span class=\"token punctuation\">;</span>\n\t\t\n\t\t<span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>cur <span class=\"token operator\">!=</span> nullptr<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\tcur <span class=\"token operator\">=</span> cur<span class=\"token operator\">-></span>front<span class=\"token punctuation\">;</span>\n\t\t\tdelete this<span class=\"token operator\">-></span>tail<span class=\"token punctuation\">;</span>\n\t\t\tthis<span class=\"token operator\">-></span>tail <span class=\"token operator\">=</span> cur<span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t\t\n\t\tthis<span class=\"token operator\">-></span>head <span class=\"token operator\">=</span> this<span class=\"token operator\">-></span>tail<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\t\n\t<span class=\"token keyword\">int</span> <span class=\"token function\">get_size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">return</span> this<span class=\"token operator\">-></span>size<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\t\n\tbool <span class=\"token function\">is_empty</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">return</span> this<span class=\"token operator\">-></span>head <span class=\"token operator\">==</span> nullptr <span class=\"token operator\">?</span> true <span class=\"token punctuation\">:</span> false<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\t\n\t<span class=\"token keyword\">void</span> <span class=\"token function\">en_queue</span><span class=\"token punctuation\">(</span>T value<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\tNode<span class=\"token operator\">&lt;</span>T<span class=\"token operator\">></span> <span class=\"token operator\">*</span>node <span class=\"token operator\">=</span> new Node<span class=\"token operator\">&lt;</span>T<span class=\"token operator\">></span><span class=\"token punctuation\">;</span>\n\t\tnode<span class=\"token operator\">-></span>data <span class=\"token operator\">=</span> value<span class=\"token punctuation\">;</span>\n\t\tnode<span class=\"token operator\">-></span>front <span class=\"token operator\">=</span> nullptr<span class=\"token punctuation\">;</span>\n\t\tnode<span class=\"token operator\">-></span>rear <span class=\"token operator\">=</span> nullptr<span class=\"token punctuation\">;</span>\n\t\t\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">is_empty</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">// first push.</span>\n\t\t\tthis<span class=\"token operator\">-></span>head <span class=\"token operator\">=</span> node<span class=\"token punctuation\">;</span>\n\t\t<span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n\t\t\tnode<span class=\"token operator\">-></span>front <span class=\"token operator\">=</span> this<span class=\"token operator\">-></span>tail<span class=\"token punctuation\">;</span>\n\t\t\tthis<span class=\"token operator\">-></span>tail<span class=\"token operator\">-></span>rear <span class=\"token operator\">=</span> node<span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t\t\n\t\tthis<span class=\"token operator\">-></span>tail <span class=\"token operator\">=</span> node<span class=\"token punctuation\">;</span>\n\t\t<span class=\"token operator\">++</span>size<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\t\n\tT <span class=\"token function\">de_queue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">is_empty</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">// empty queue</span>\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// T type에 맞는 error code return.</span>\n\t\t<span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n\t\t\t<span class=\"token keyword\">int</span> pop_val <span class=\"token operator\">=</span> this<span class=\"token operator\">-></span>head<span class=\"token operator\">-></span>data<span class=\"token punctuation\">;</span>\n\t\t\t\n\t\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>this<span class=\"token operator\">-></span>head <span class=\"token operator\">==</span> this<span class=\"token operator\">-></span>tail<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span> <span class=\"token comment\">// queue with 1 element.</span>\n\t\t\t\tdelete this<span class=\"token operator\">-></span>head<span class=\"token punctuation\">;</span>\n\t\t\t\tthis<span class=\"token operator\">-></span>head <span class=\"token operator\">=</span> this<span class=\"token operator\">-></span>tail <span class=\"token operator\">=</span> nullptr<span class=\"token punctuation\">;</span>\n\t\t\t<span class=\"token punctuation\">}</span>\n\t\t\t<span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span> <span class=\"token comment\">// queue with more than 2 elements.</span>\n\t\t\t\tNode<span class=\"token operator\">&lt;</span>T<span class=\"token operator\">></span> <span class=\"token operator\">*</span>node <span class=\"token operator\">=</span> new Node<span class=\"token operator\">&lt;</span>T<span class=\"token operator\">></span><span class=\"token punctuation\">;</span>\n\t\t\t\t\n\t\t\t\tnode <span class=\"token operator\">=</span> this<span class=\"token operator\">-></span>head<span class=\"token operator\">-></span>rear<span class=\"token punctuation\">;</span>\n\t\t\t\t\n\t\t\t\tdelete this<span class=\"token operator\">-></span>head<span class=\"token punctuation\">;</span>\n\t\t\t\t\n\t\t\t\tthis<span class=\"token operator\">-></span>head <span class=\"token operator\">=</span> node<span class=\"token punctuation\">;</span>\n\t\t\t\tthis<span class=\"token operator\">-></span>head<span class=\"token operator\">-></span>front <span class=\"token operator\">=</span> nullptr<span class=\"token punctuation\">;</span>\n\t\t\t<span class=\"token punctuation\">}</span>\n\t\t\t\n\t\t\t<span class=\"token operator\">--</span>size<span class=\"token punctuation\">;</span>\n\t\t\t<span class=\"token keyword\">return</span> pop_val<span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t<span class=\"token punctuation\">}</span>\n\t\n\tT <span class=\"token function\">get_head</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">is_empty</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">// empty queue</span>\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// T type에 맞는 error code return.</span>\n\t\t<span class=\"token keyword\">else</span>\n\t\t\t<span class=\"token keyword\">return</span> this<span class=\"token operator\">-></span>head<span class=\"token operator\">-></span>data<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\t\n\tT <span class=\"token function\">get_tail</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">is_empty</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">// empty queue</span>\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// T type에 맞는 error code return.</span>\n\t\t<span class=\"token keyword\">else</span>\n\t\t\t<span class=\"token keyword\">return</span> this<span class=\"token operator\">-></span>tail<span class=\"token operator\">-></span>data<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n\t\n\tfriend std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>ostream<span class=\"token operator\">&amp;</span> operator <span class=\"token operator\">&lt;&lt;</span><span class=\"token punctuation\">(</span>std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>ostream <span class=\"token operator\">&amp;</span>out<span class=\"token punctuation\">,</span> Queue<span class=\"token operator\">&lt;</span>T<span class=\"token operator\">></span> <span class=\"token operator\">&amp;</span>queue<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t\tNode<span class=\"token operator\">&lt;</span>T<span class=\"token operator\">></span> <span class=\"token operator\">*</span>temp <span class=\"token operator\">=</span> queue<span class=\"token punctuation\">.</span>head<span class=\"token punctuation\">;</span>\n\t\t\n\t\t<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> queue<span class=\"token punctuation\">.</span><span class=\"token function\">get_size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token operator\">++</span>i<span class=\"token punctuation\">)</span>\n\t\t\tout <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">\"──\"</span><span class=\"token punctuation\">;</span>\n\t\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>endl<span class=\"token punctuation\">;</span>\n\t\t\n\t\t<span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span>temp <span class=\"token operator\">!=</span> nullptr<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\tout <span class=\"token operator\">&lt;&lt;</span> temp<span class=\"token operator\">-></span>data <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">\" \"</span><span class=\"token punctuation\">;</span>\n\t\t\ttemp <span class=\"token operator\">=</span> temp<span class=\"token operator\">-></span>rear<span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>endl<span class=\"token punctuation\">;</span>\n\t\t\n\t\t<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> queue<span class=\"token punctuation\">.</span><span class=\"token function\">get_size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token operator\">++</span>i<span class=\"token punctuation\">)</span>\n\t\t\tout <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">\"──\"</span><span class=\"token punctuation\">;</span>\n\t\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>endl<span class=\"token punctuation\">;</span>\n\t\t\n\t\t<span class=\"token keyword\">return</span> out<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\t\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>ios<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span><span class=\"token function\">sync_with_stdio</span><span class=\"token punctuation\">(</span>false<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cin<span class=\"token punctuation\">.</span><span class=\"token function\">tie</span><span class=\"token punctuation\">(</span><span class=\"token constant\">NULL</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> \n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout<span class=\"token punctuation\">.</span><span class=\"token function\">tie</span><span class=\"token punctuation\">(</span><span class=\"token constant\">NULL</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\n\tQueue<span class=\"token operator\">&lt;</span><span class=\"token keyword\">int</span><span class=\"token operator\">></span> queue<span class=\"token punctuation\">;</span>\n\t\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">\"Queue en_queue(push) : \"</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">1</span> <span class=\"token operator\">&lt;&lt;</span> std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>endl<span class=\"token punctuation\">;</span>\n\tqueue<span class=\"token punctuation\">.</span><span class=\"token function\">en_queue</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> queue<span class=\"token punctuation\">;</span>\n\t\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">\"Queue en_queue(push) : \"</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span> <span class=\"token operator\">&lt;&lt;</span> std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>endl<span class=\"token punctuation\">;</span>\n\tqueue<span class=\"token punctuation\">.</span><span class=\"token function\">en_queue</span><span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> queue<span class=\"token punctuation\">;</span>\n\t\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">\"Queue en_queue(push) : \"</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">4</span> <span class=\"token operator\">&lt;&lt;</span> std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>endl<span class=\"token punctuation\">;</span>\n\tqueue<span class=\"token punctuation\">.</span><span class=\"token function\">en_queue</span><span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> queue<span class=\"token punctuation\">;</span>\n\t\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">\"Queue length(size) : \"</span> <span class=\"token operator\">&lt;&lt;</span> queue<span class=\"token punctuation\">.</span><span class=\"token function\">get_size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>endl<span class=\"token punctuation\">;</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">\"Queue front(head) : \"</span> <span class=\"token operator\">&lt;&lt;</span> queue<span class=\"token punctuation\">.</span><span class=\"token function\">get_head</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>endl<span class=\"token punctuation\">;</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">\"Queue rear(tail) : \"</span> <span class=\"token operator\">&lt;&lt;</span> queue<span class=\"token punctuation\">.</span><span class=\"token function\">get_tail</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>endl<span class=\"token punctuation\">;</span>\n\t\n\t\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">\"Queue de_queue(pop) : \"</span> <span class=\"token operator\">&lt;&lt;</span> queue<span class=\"token punctuation\">.</span><span class=\"token function\">de_queue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>endl<span class=\"token punctuation\">;</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> queue<span class=\"token punctuation\">;</span>\n\t\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">\"Queue de_queue(pop) : \"</span> <span class=\"token operator\">&lt;&lt;</span> queue<span class=\"token punctuation\">.</span><span class=\"token function\">de_queue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>endl<span class=\"token punctuation\">;</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> queue<span class=\"token punctuation\">;</span>\n\t\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">\"Queue de_queue(pop) : \"</span> <span class=\"token operator\">&lt;&lt;</span> queue<span class=\"token punctuation\">.</span><span class=\"token function\">de_queue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>endl<span class=\"token punctuation\">;</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> queue<span class=\"token punctuation\">;</span>\n\t\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">\"Queue de_queue(pop) : \"</span> <span class=\"token operator\">&lt;&lt;</span> queue<span class=\"token punctuation\">.</span><span class=\"token function\">de_queue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>endl<span class=\"token punctuation\">;</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> queue<span class=\"token punctuation\">;</span>\n\t\n\t<span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h3>References</h3>\n<p><a href=\"https://ko.wikipedia.org/wiki/%ED%81%90_(%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0\">https://ko.wikipedia.org/wiki/%ED%81%90<em>(%EC%9E%90%EB%A3%8C</em>%EA%B5%AC%EC%A1%B0</a>)<br>\n<a href=\"https://gmlwjd9405.github.io/2018/08/02/data-structure-queue.html\">https://gmlwjd9405.github.io/2018/08/02/data-structure-queue.html</a><br>\n<a href=\"https://galid1.tistory.com/483\">https://galid1.tistory.com/483</a>  </p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p><a href=\"https://medium.com/@1991dharapatel/javascript-stacks-and-queues-136fabab8359\">https://medium.com/@1991dharapatel/javascript-stacks-and-queues-136fabab8359</a></p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>","fields":{"tagSlugs":["/tags/data-structure/"],"slug":"/posts/data_structures/queue/"},"frontmatter":{"title":"[자료구조] Queue(큐)","tags":["Data Structure"],"date":"2020-03-30","description":"Queue(큐)에 대해 알아보자."}}},"pageContext":{"slug":"/posts/data_structures/queue/"}}