이전 글에서 C# 컬렉션으로 ArrayList에 대해 알아보았습니다. 이번에는 Queue에 대해 알아보겠습니다. C#은 객체 지향 언어로서 모든 요소가 객체로 구성됩니다. 객체는 이벤트, 속성, 메서드를 가지며 이를 사용하여 프로그래밍을 하게 됩니다.
C# 컬렉션 알아보기 - ArrayList & 메서드
앞에서 알아본 배열은 크기를 미리 지정해야만 사용할 수 있었습니다. 비록 가변 배열을 사용하므로 약간에 유동성을 주었지만 행의 크기는 결정한 상태에서 사용해야 했습니다. 하지만, 컬렉
mr-johndoe.tistory.com
1. Queue
배열은 인덱스 번호를 이용하여 저장된 데이터를 원하는 대로 입출력이 가능하였습니다. 하지만 Queue는 이와는 달리 제일 처음에 있는 데이터를 출력할 수 있으며 입력을 하면 가장 마지막 데이터로 입력이 됩니다.
유명한 식당에서 식사를 하기 위해 줄을 섰을 때 모습을 상상하시면 식당에 자리가 나면 식당 입구의 제일 앞에 있는 사람이 입장을 합니다. 그리고 새로운 사람이 식당에 오면 줄의 맨 뒤에 서게 됩니다.
이와 같이 Queue의 데이터 입출력 방식을 영어로 'First In First Out'이라 하며 이를 줄여서 FIFO 구조라고 합니다.
Queue를 선언할 때도 ArrayList와 마찬가지로 new를 사용합니다.
Queue 이름 = new Queue( );
Queue의 데이터는 ArrayList와 마찬가지로 모든 데이터형을 받아들일 수 있는데, Queue 역시 데이터를 Object형으로 관리하기 때문입니다.
2. Queue의 메서드
2.1 Enqueue
Enqueue는 Queue에 데이터를 입력할 때 사용하는 메서드입니다. Enqueue 메서드를 사용하여 Queue에 데이터를 입력하게 되면 입력한 데이터는 Queue의 제일 마지막 메모리에 입력됩니다.
2.2 Dequeue
Dequeue는 Queue에서 데이터를 출력할 때 사용하는 메서드입니다. Dequeue 메서드를 사용하여 Queue에서 데이터를 출력하게 되면 Queue의 제일 첫 번째 메모리에 입력되어 있는 데이터를 추출하고 그 다음 메모리에 입력되어 있는 데이터가 Queue의 첫번째 데이터가 됩니다.
3. 예제를 통해 Queue 확인
Visual Studio를 여시고 C# 콘솔 애플리케이션을 생성하세요. 출력된 코드 창에 다음과 같이 입력합니다.
using System;
using System.Collections;
namespace UsingQueue
{
class Program
{
static void Main(string[] args)
{
Queue que = new Queue();
que.Enqueue(1);
que.Enqueue(2);
que.Enqueue(3);
foreach(Object obj in que)
{
Console.Write(obj);
}
Console.Write('\n');
que.Dequeue();
foreach(Object obj in que)
{
Console.Write(obj);
}
Console.Write('\n');
}
}
}
컬렉션을 사용하기 위해 using System.Collections;을 선언해 주었습니다.
Queue que = new Queue();
=> que라는 이름으로 new를 사용하여 Queue를 생성하였습니다.
que.Enqueue(1);
que.Enqueue(2);
que.Enqueue(3);
=> 생성한 que에 차례대로 1, 2, 3이라는 값을 입력하였습니다.
다음 foreach문을 사용하여 que의 데이터를 화면에 출력하게 하였습니다.
que.Dequeue();
=> 생성한 que의 데이터를 하나 추출하였습니다. 제일 첫 번째 데이터인 1이 추출됩니다.
다음 foreach문을 사용하여 que의 데이터를 화면에 출력하게 하였습니다.
예제를 실행하면 다음과 같이 화면에 출력됩니다.
123
23
'Programming > C#' 카테고리의 다른 글
C# 컬렉션 알아보기 - Hashtable & 메서드 (0) | 2021.10.15 |
---|---|
C# 컬렉션 알아보기 - Stack & 메서드 (0) | 2021.10.15 |
C# 컬렉션 알아보기 - ArrayList & 메서드 (0) | 2021.10.14 |
C# 가변 배열 선언, 생성 및 초기화 (0) | 2021.10.09 |
C# 이차원 배열 (0) | 2021.10.08 |