C++ 쟁이가 C#을 배워보자 - Stack / Queue

저번 포스트의 Set에 이어 이번에는 컬렉션 중 Stack과 Queue에 대해 알아보고자 한다.

1. Stack

기본적인 스택의 자료구조에 대해서는 깊이 설명하지 않겠다. 쉽게 말해서 리스트에 아이템을 넣고 빼고 하는 구조인데 나중에 넣은 것이 먼저 빠져나오는 형식의 자료구조이다. (Last In, First Out - LIFO)
출처 : 위키피디아-스택 항목

스택에 자료를 넣는 것을 Push, 꺼내는 것을 Pop이라고 한다. Pop을 하게 되면 가장 마지막에 Push한 데이터가 반환되고 스택에서 해당 데이터가 제거가 된다.

정수형 데이터를 저장하는 스택을 선언 후 값을 0~9까지 Push하고 하나씩 Pop한 결과를 출력하는 코드는 다음과 같다.

Stack<int> stack = new Stack<int>();
            
for (int i = 0; i < 10; i++)
{
    stack.Push(i);
}

while (stack.Count > 0)
{
    System.Console.WriteLine($"{stack.Pop()}");
}

위 코드의 결과는 9~0까지 하나씩 출력된다.

2. Queue

큐는 스택과 유사하나 먼저 넣은 데이터가 먼저 나오는 형태의 자료구조이다. (First In, First Out - FIFO)
기본 자료구조인 선형(내 이름 아님...Linear임...) 큐외에 큐 리스트를 재활용이 가능하도록 원형 큐로 만들어 쓸 수 있다. 아쉽게도 기본 자료구조로는 제공하지 않음...
출처: 위키피디아-queue 항목(영문)
큐에 자료를 넣고 빼는 메서드는 Enqueue, Dequeue로 가능하다. 위 스택의 예제와 유사하게 0~9까지 큐에 넣고 하나씩 꺼내서 출력하는 샘플은 다음과 같다.

Queue<int> que = new Queue<int>();

for (int i = 0; i < 10; i++)
{
    que.Enqueue(i);
}

while (que.Count > 0)
{
    System.Console.WriteLine($"{que.Dequeue()}");
}
큐에 데이터를 넣는것은 스택과 동일한 순서로 0~9까지 들어가지만 Dequeue하면서 출력한 결과는 넣은 순서와 동일하게 나오는 것을 확인할 수 있다.

댓글

가장 많이 본 글