스택과 큐 (Stack & Queue)

  • 최초 작성일: 2021년 4월 20일(수)

목차

[TOC]

내용

스택 (Stack)

image

스택(Stack)은 ‘쌓다’의 의미로, 데이터를 세로로 쌓아 올린 형태의 자료구조이다.

벽돌을 위로 쌓아올렸다가 다시 치우는 걸 상상해보자. 벽돌을 쌓아올린 후에 그것을 다시 치우려면 제일 위에 있는 것부터 차례대로 빼내어야한다.

다시 말해, 가장 늦게 삽인된 것이 가장 먼저 제거된다. 이것이 스택의 특징이며 LIFO (Last In First Out)라 부른다.


큐 (Queue)

image

큐(Queue)는 ‘줄을 서다’의 의미로, 데이터를 일렬로 나열시키는 형태의 자료구조이다.

사람들이 화장실을 이용하기 위해 줄을 서고 있는 걸 상상해보자. 가장 먼저 온 사람이 차례를 기다려 화장실 사용을 위해 대기열로부터 나갈 수 있다.

다시 말해, 가장 먼저 삽인된 것이 가장 먼저 제거된다. 이것이 큐의 특징이며 FIFO (First In First Out)라 부른다.


C# 코드

Program.cs

using System;
using System.Collections.Generic;

namespace Exercise
{
    // [1] [2] [3] [4]

    // 스택:  LIFO (후입선출 Last In First Out)
    // 큐  :  FIFO (선입선출 First In First Out)

    class Program
    {
        static void Main(string[] args)
        {
            Stack<int> stack = new Stack<int>();

            stack.Push(101);
            stack.Push(102);
            stack.Push(103);
            stack.Push(104);
            stack.Push(105);

            int data = stack.Pop();
            int data2 = stack.Peek();

            
            Queue<int> queue = new Queue<int>();
            queue.Enqueue(101);
            queue.Enqueue(102);
            queue.Enqueue(103);
            queue.Enqueue(104);
            queue.Enqueue(105);

            int data3 = queue.Dequeue();
            int data4 = queue.Peek();
        }
    }
}



Result Video

image