BLOG
C#

C# Queue와 Stack


March 14, 2022, 11:13 p.m.



C#의 제네릭 컬렉션에는 큐와 스택도 포함되어 있습니다.

1. Queue, 큐


큐는 FIFO, 선입선출 방식의 데이터 구조입니다. 즉 먼저 넣은 데이터가 먼저 나오는 구조이죠. Enqueue()를 통해 큐에 데이터를 집어넣고 .Dequeue()를 통해 큐에 있는 데이터를 빼냅니다. 아래 예시를 보시겠습니다!

Queue<string> myQueue = new Queue<string>();

myQueue.Enqueue("first");
myQueue.Enqueue("second");
myQueue.Enqueue("third");

string 객체를 담는 큐를 선언하고 세개의 문자열 객체를 Enqueue 하였습니다.

Dequeue()로 객체를 하나 빼낼 수 있습니다. 가장 먼저 넣은 "first"를 반환하겠네요.

Console.WriteLine(myQueue.Dequeue()); // first

Peek()으로 Dequeue()를 했을 때 반환할 객체를 빼내지 않고 훑어만 볼 수 있습니다. 다음으로 나올 차례인 "second"를 반환하겠네요. Peek()이후에도 "second"는 남아있습니다.

Console.WriteLine(myQueue.Peek()); // second

Count으로 현재 큐에 있는 객체의 수를 알 수 있습니다. 두개가 있으므로 2를 반환하겠네요.

Console.WriteLine(myQueue.Count); // 2

Clear()로 큐 안의 모든 객체를 없앨 수 있습니다.

myQueue.Clear();

2. Stack, 스택


스택은 LIFO, 후입선출의 데이터 구조입니다. 즉 제일 나중에 넣은 객체가 먼저 나오게 되는 구조입니다. Push()를 통해 스택에 객체를 집어넣고 Pop()으로 꺼냅니다.

Stack<string> myStack = new Stack<string>();

myStack.push("first");
myStack.push("second");
myStack.push("third");

스택 객체를 만들었고 세개의 문자열을 Push를 통해 집어 넣었습니다.

Pop()을 통해 객체를 꺼냅니다. 가장 마지막에 넣은 "third"가 나오겠네요.

Console.WriteLine(myStack.Pop()); // third

Peek()을 통해 다음으로 꺼낼 객체를 훑어볼 수 있습니다. 다음으로 늦게 넣은 "second"가 반환되겠네요. Peek() 후에도 "second"는 남아 있습니다.

Console.WriteLine(myStack.Peek()); // second

Clear()를 통해 마찬가지로 스택 안의 모든 객체를 없앱니다.

myStack.Clear();

3. foreach


큐와 스택은 모두 IEnumerable을 상속 받기 때문에 foreach문을 쓸 수 있답니다!

Stack Queue



Search