Updated Repo Layout

This commit is contained in:
2022-04-01 22:02:39 +01:00
parent 88d84ab448
commit e5fa390608
9 changed files with 17 additions and 17 deletions

View File

@ -0,0 +1,70 @@
namespace C_.Datastructures.Queue
{
internal class Queue<T>
{
internal QueueNode<T>? Head { get; set; }
internal QueueNode<T>? Tail { get; set; }
private int Count { get; set; } = 0;
public static Queue<T> Create()
{
//Create a new queue without a head / tail
return new Queue<T>();
}
public static Queue<T> Create(T value)
{
//Create a new Queue with a head + tail
QueueNode<T> newNode = QueueNode<T>.Create(value, default);
return new Queue<T>
{
Head = newNode,
Tail = newNode,
Count = 1
};
}
public void Push(T value)
{
//Add an Item to the end of the Queue
Count++;
if (Count > 1)
{
Tail!.Next = QueueNode<T>.Create(value, default);
Tail = Tail!.Next;
return;
}
Head = QueueNode<T>.Create(value, default);
Tail = Head;
return;
}
public T? Pop()
{
//Take the item off the front of the queue
T? value = default;
if (Count > 0)
{//Assign the default value if there are any items left in the Queue
Count--;
value = Head!.Value;
Head = Head.Next;
if (Count == 0)
{
Head = default;
Tail = Head;
}
}
return value;
}
public T? Peek()
{
//View item at the front of the Queue
if (Count > 0)
{
return Head!.Value;
}
return default;
}
}
}

View File

@ -0,0 +1,16 @@
using C_.Datastructures.Generic;
namespace C_.Datastructures.Queue
{
internal class QueueNode<T> : Node<T, QueueNode<T>>
{
public static QueueNode<T> Create(T? value, QueueNode<T>? next)
{
return new QueueNode<T>
{
Value = value,
Next = next
};
}
}
}