Trying to make a circular queue, but its not working right. Enqueue is just adding things to the end, every time.
my output is:
Numbers in Queue: 1 2 3
Numbers in Queue: 2 3
Numbers in Queue: 2 3 6
it should be:
Numbers in Queue: 1 2 3
Numbers in Queue: 2 3
Numbers in Queue: 6 2 3
any suggestions?
using System;
namespace CircularArrayQueue
{
class Program
{
static void Main(string[] args)
{
try
{
QueueStuff queue = new QueueStuff();
queue.Enqueue(1);
queue.Enqueue(2);
queue.Enqueue(3);
queue.PrintQueue();
queue.Dequeue();
queue.PrintQueue();
queue.Enqueue(6);
queue.PrintQueue();
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
}
class QueueStuff
{
int head = 0;
int tail = 0;
object[] Qlist = new object[5];
public object Enqueue(object insert)
{
if (Full())
{
throw new Exception("Queue is full, cannot add more");
}
else
{
Qlist[tail] = insert;
tail = count(tail);
return true;
}
}
public void Dequeue()
{
if (Empty())
{
throw new Exception("Queue is Empty, can not Dequeue");
}
else
{
object toDelete;
toDelete = Qlist[head];
Qlist[head] = null;
head = count(head);
}
}
public void PrintQueue()
{
Console.Write("Queue Contains: ");
if (Empty())
{
Console.WriteLine("Queue is Empty.");
}
for (int i = 0; i < tail; i++)
{
Console.Write(Qlist[i]);
Console.Write(" ");
}
Console.WriteLine("\n");
}
public bool Empty()
{
return (head == tail);
}
public int count(int x)
{
x++;
return (x);
}
public bool Full()
{
return (tail == 5);
}
public void empty()
{
tail = head = 0;
}
}