728x90
- 큐(Queue)란?
- 선입선출(先入先出) 구조
- FIFO(First-In-First-Out)
- Enqueue와 Dequeue
- Enqueue : 저장공간에 데이터를 집어넣는 행위
- Dequeue : 저장공간에서 데이터를 빼내는 행위
- Stack과 다르게 데이터 입/출구가 다르다(Rear / Front)
- Enqueue
- Dequeue
- 배열로 구현
인덱스가 꽉 차면 더 이상 데이터가 입력되지 않는다.(OutofIndexLayer 출력)
인덱스 = Rear % 배열의 크기
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace queue
{
class Program
{
static int[] m_queue = new int[5];
static int front = -1;
static int rear = -1;
static void Main(string[] args)
{
Enqueue(10);
Enqueue(20);
Enqueue(30);
Enqueue(40);
Enqueue(50);
Dequeue();
Dequeue();
Dequeue();
Enqueue(60);
Enqueue(70);
Dequeue();
Dequeue();
Dequeue();
for (int i = 0; i < m_queue.Length; i++)
{
Console.WriteLine("Index" + i + " - " + m_queue[i]);
}
}
private static void Dequeue()
{
if (front == -1)
return;
int value = m_queue[front % m_queue.Length];
Console.WriteLine("Dequeue - " + value);
m_queue[front % m_queue.Length] = 0;
front++;
if(front > rear)
{
front = -1;
rear = -1;
}
}
private static void Enqueue(int value)
{
rear++;
if(rear - front > m_queue.Length - 1)
{
rear--;
return;
}
m_queue[rear % m_queue.Length] = value;
if (front == -1)
front = 0;
}
}
}
728x90
'게임 프로그래밍 > C#' 카테고리의 다른 글
C# 알고리즘 - 재귀호출(Recursive Call) (0) | 2021.12.27 |
---|---|
C# 선형 자료구조 - 해쉬테이블 & 딕셔너리(HashTable & Dictionary<T>) (0) | 2021.12.27 |
C# 선형 자료구조 - 스택(Stack) (0) | 2021.12.26 |
C# 선형 자료구조 - 연결리스트(LinkedList) (0) | 2021.12.25 |
C# 선형 자료구조 - 리스트(List, ArrayList, LinkedList) (0) | 2021.12.25 |