bat/tests/syntax-tests/source/C-Sharp/Stack.cs
2020-10-05 07:15:09 +02:00

65 lines
1.4 KiB
C#
Vendored

namespace StackImplementation
{
internal class Stack<T>
{
private int _top;
private const int Capacity = 4;
private readonly T[] _stack = new T[Capacity];
public Stack()
{
_top = -1;
}
private bool IsEmpty()
{
return _top < 0;
}
private bool IsFull()
{
return _top == Capacity - 1;
}
public void Peek()
{
System.Console.WriteLine(!IsEmpty() ? $"The topmost element is: {_stack[_top]}" : "The stack is empty.");
}
public T Pop()
{
return !IsEmpty() ? _stack[_top--] : default;
}
public void Push(T element)
{
if (!IsFull())
{
_stack[++_top] = element;
}
else
{
System.Console.WriteLine("Cannot push - the stack is full.");
}
}
public override string ToString()
{
if (IsEmpty())
{
return "The stack is empty.";
}
var depiction = "";
for (var index = 0; index < _top; index++)
{
depiction += _stack[index].ToString() + ' ';
}
depiction += _stack[_top].ToString();
return $"Stack: [{depiction}]";
}
}
}