public App()
{
Queue queue = new Queue();
queue.Enqueue(3);
queue.Enqueue(5);
queue.Enqueue(7);
queue.Enqueue(9);
Console.WriteLine("Dequeue: {0}", queue.Dequeue());
Console.WriteLine("Dequeue: {0}", queue.Dequeue());
Console.WriteLine();
Console.WriteLine("Peek: {0}", queue.Peek());
Console.WriteLine();
Console.WriteLine("Count: {0}", queue.Count());
}
class Queue
{
private class Node
{
public int Data;
public Node Next;
public Node(int data)
{
Data = data;
}
}
private Node head;
private Node tail;
public void Enqueue(int value)
{
if (head == null)
{
head = new Node(value);
tail = head;
}
else
{
tail.Next = new Node(value);
tail = tail.Next;
}
}
public int Dequeue()
{
if (head == null)
{
throw new InvalidOperationException();
}
else if (head == tail)
{
int value = head.Data;
head = null;
tail = null;
return value;
}
else
{
int value = head.Data;
Node temp = head.Next;
head = temp;
return value;
}
}
public int Peek()
{
if (head == null)
{
throw new InvalidOperationException();
}
else
{
return head.Data;
}
}
public int Count()
{
int count = 0;
if (head == null)
{
return count;
}
else
{
Node temp = head;
return Count(head, count + 1);
}
}
private int Count(Node temp, int count)
{
if (temp.Next == null)
{
return count;
}
else
{
return Count(temp.Next, count + 1);
}
}
}

'C# > 수업 내용' 카테고리의 다른 글
| [C#] 일반 트리 level order traversal (0) | 2021.09.26 |
|---|---|
| [C#] Tree (0) | 2021.09.24 |
| [C#] Queue (0) | 2021.09.23 |
| [C#] Stack 복습 (0) | 2021.09.23 |
| [C#] 2021-09-17 역폴란드 표기법 (0) | 2021.09.18 |