원형배열로 구현한 Queue
Algorithm 2020. 10. 7. 17:37반응형
using System;
using System.Collections.Generic;
namespace test_01
{
public class App
{
//생성자
public App()
{
// for (int i = 0; i < 11; i++)
// {
// Console.WriteLine(i % 10);
// }
Queue queue = new Queue();
queue.Enqueue(1);
queue.Enqueue(2);
var data = queue.Dequeue();
Console.WriteLine("Dequeue: " + data);
data = queue.Dequeue();
Console.WriteLine("Dequeue: " + data);
data = queue.Dequeue();
Console.WriteLine("Dequeue: " + data);
// queue.EnQueue(3);
// queue.EnQueue(4);
}
}
}
using System;
namespace test_01
{
public class Queue
{
public object[] arr;
public int front;
public int rear;
//생성자
public Queue(int size = 10)
{
this.arr = new object[size];
this.front = -1;
this.rear = -1;
}
public void Enqueue(object item)
{
//가득찼는지 확인
if ((rear + 1) % this.arr.Length == front)
{
throw new ApplicationException("Full.");
}
else
{
//비어 있는 경우
if (front == -1)
{
front++;
}
//데이터 추가
rear = (rear + 1) % this.arr.Length;
this.arr[rear] = item;
}
}
public object Dequeue()
{
//비어있는지 체크
if (this.front == -1 && this.rear == -1)
{
throw new ApplicationException("Empty");
}
else
{
//데이터 읽기
var data = this.arr[this.front];
//마지막 요소인경우
if (this.front == this.rear)
{
//초기화
this.front = -1;
this.rear = -1;
}
else
{
this.front = (this.front + 1) % this.arr.Length;
}
return data;
}
}
}
}
반응형
'Algorithm' 카테고리의 다른 글
selection sort in c# (0) | 2020.10.14 |
---|---|
고정배열을 구현한 Queue (0) | 2020.10.07 |
C#으로 구현한 링크드리스트 (0) | 2020.04.16 |
c# | 백준 | 2953 (0) | 2019.10.18 |
C# | 백준 | 3052 (0) | 2019.10.16 |