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

64 lines
9.7 KiB
C#
Vendored
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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