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