Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- namespace Stack //статичный
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- try
- {
- FixedStack<string> stack = new FixedStack<string>(8);
- //добавляем четыре элемента
- stack.Push("tom");
- stack.Push("sam");
- stack.Push("max");
- stack.Push("kirill");
- //извлекаем один элемент
- string head = stack.Pop();
- Console.WriteLine(head);
- //просто получаем верхушку стека без извлечения
- Console.WriteLine(stack.Peek());
- }
- catch (InvalidOperationException ex)
- {
- Console.WriteLine(ex.Message);
- }
- Console.ReadLine();
- }
- public class FixedStack<T>
- {
- private T[] items;//элементы стека
- private int count;//количество элементов
- const int n = 10;//количество элементов в массиве
- public FixedStack()
- {
- items = new T[n];
- }
- public FixedStack(int _length)
- {
- items = new T[_length];
- }
- public bool IsEmpty//пуст ли стек
- {
- get { return count == 0; }
- }
- public int Count//размер стека
- {
- get { return count; }
- }
- public void Push(T item)//добавление элемента
- {
- if(count == items.Length)//если стек заполнен, выбрасываем исключение
- {
- throw new InvalidOperationException("переполнение стека");
- }
- items[count++] = item;
- }
- public T Pop()//извлечение элеиента
- {
- if(IsEmpty)//если стек пуст выбрасываем исключение
- {
- throw new InvalidOperationException("стек пуст");
- }
- T item = items[--count];
- items[count] = default(T);//сбрасываем ссылку
- return item;
- }
- public T Peek()//возвращаем элемент из верхушки стека
- {
- if(IsEmpty)//если стек пуст выбрасываем исключение
- {
- throw new InvalidOperationException("стек пуст");
- }
- return items[count - 1];
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement