bat/tests/syntax-tests/highlighted/C-Sharp/Stack.cs

65 lines
9.7 KiB
C#
Raw Normal View History

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}]";
 }
 }
}