Advertisement
CR7CR7

libraryD1-Stack

Jul 14th, 2023
751
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.44 KB | None | 0 0
  1. using System;
  2.  
  3. namespace d1
  4. {
  5.     // Клас за представяне на стек
  6.     public class Stack<T>
  7.     {
  8.         // Поле за съхранение на елементите на стека в масив
  9.         private T[] items;
  10.  
  11.         // Поле за съхранение на индекса на върха на стека
  12.         private int top;
  13.  
  14.         // Конструктор с параметър за капацитета на стека
  15.         public Stack(int capacity)
  16.         {
  17.             // Създаваме нов масив с посочения капацитет
  18.             items = new T[capacity];
  19.  
  20.             // Инициализираме върха на стека с -1, което означава, че стекът е празен
  21.             top = -1;
  22.         }
  23.  
  24.         // Метод за проверка дали стекът е празен
  25.         public bool IsEmpty()
  26.         {
  27.             // Стекът е празен, ако върхът е -1
  28.             return top == -1;
  29.         }
  30.  
  31.         // Метод за проверка дали стекът е пълен
  32.         public bool IsFull()
  33.         {
  34.             // Стекът е пълен, ако върхът е равен на дължината на масива минус 1
  35.             return top == items.Length - 1;
  36.         }
  37.  
  38.         // Метод за добавяне на елемент в стека
  39.         public void Push(T item)
  40.         {
  41.             // Проверяваме дали стекът е пълен
  42.             if (IsFull())
  43.             {
  44.                 // Ако е пълен, хвърляме изключение
  45.                 throw new InvalidOperationException("Стекът е пълен.");
  46.             }
  47.  
  48.             // Увеличаваме върха на стека с 1
  49.             top++;
  50.  
  51.             // Записваме елемента на тази позиция в масива
  52.             items[top] = item;
  53.         }
  54.  
  55.         // Метод за премахване на елемент от стека
  56.         public T Pop()
  57.         {
  58.             // Проверяваме дали стекът е празен
  59.             if (IsEmpty())
  60.             {
  61.                 // Ако е празен, хвърляме изключение
  62.                 throw new InvalidOperationException("Стекът е празен.");
  63.             }
  64.  
  65.             // Запазваме елемента на върха на стека в променлива
  66.             T item = items[top];
  67.  
  68.             // Намаляваме върха на стека с 1
  69.             top--;
  70.  
  71.             // Връщаме запазения елемент като резултат от метода
  72.             return item;
  73.         }
  74.  
  75.         // Метод за връщане на елемента на върха на стека без да го премахваме
  76.         public T Peek()
  77.         {
  78.             // Проверяваме дали стекът е празен
  79.             if (IsEmpty())
  80.             {
  81.                 // Ако е празен, хвърляме изключение
  82.                 throw new InvalidOperationException("Стекът е празен.");
  83.             }
  84.  
  85.             // Връщаме елемента на върха на стека като резултат от метода
  86.             return items[top];
  87.         }
  88.     }
  89. }
  90.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement