Advertisement
m1okgoodyes

Stack static

Apr 2nd, 2022
776
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.99 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5.  
  6. namespace Stack //статичный
  7. {
  8.     internal class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             try
  13.             {
  14.                 FixedStack<string> stack = new FixedStack<string>(8);
  15.                 //добавляем четыре элемента
  16.                 stack.Push("tom");
  17.                 stack.Push("sam");
  18.                 stack.Push("max");
  19.                 stack.Push("kirill");
  20.  
  21.                 //извлекаем один элемент
  22.                 string head = stack.Pop();
  23.                 Console.WriteLine(head);
  24.  
  25.                 //просто получаем верхушку стека без извлечения
  26.                 Console.WriteLine(stack.Peek());
  27.             }
  28.             catch (InvalidOperationException ex)
  29.             {
  30.                 Console.WriteLine(ex.Message);
  31.             }
  32.  
  33.             Console.ReadLine();
  34.         }
  35.         public class FixedStack<T>
  36.         {
  37.             private T[] items;//элементы стека
  38.             private int count;//количество элементов
  39.             const int n = 10;//количество элементов в массиве
  40.             public FixedStack()
  41.             {
  42.                 items = new T[n];
  43.             }
  44.             public FixedStack(int _length)
  45.             {
  46.                 items = new T[_length];
  47.             }
  48.             public bool IsEmpty//пуст ли стек
  49.             {
  50.                 get { return count == 0; }
  51.             }
  52.             public int Count//размер стека
  53.             {
  54.                 get { return count; }
  55.             }
  56.             public void Push(T item)//добавление элемента
  57.             {
  58.                 if(count == items.Length)//если стек заполнен, выбрасываем исключение
  59.                 {
  60.                     throw new InvalidOperationException("переполнение стека");
  61.                 }
  62.                 items[count++] = item;
  63.             }
  64.             public T Pop()//извлечение элеиента
  65.             {
  66.                 if(IsEmpty)//если стек пуст выбрасываем исключение
  67.                 {
  68.                     throw new InvalidOperationException("стек пуст");
  69.                 }
  70.                 T item = items[--count];
  71.                 items[count] = default(T);//сбрасываем ссылку
  72.                 return item;
  73.             }
  74.             public T Peek()//возвращаем элемент из верхушки стека
  75.             {
  76.                 if(IsEmpty)//если стек пуст выбрасываем исключение
  77.                 {
  78.                     throw new InvalidOperationException("стек пуст");
  79.                 }
  80.                 return items[count - 1];
  81.             }
  82.         }
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement