В этом примере мы напишем программу на языке C# для реализации стека с операциями Push и Pop.
Основные операции, которые вы выполняете со стеком, — это Push и Pop. Данные добавляются в стек с помощью метода Push. Данные удаляются из стека с помощью метода Pop.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Stack { class Program { static void Main(string[] args) { stack st = new stack(); while (true) { Console.Clear(); Console.WriteLine("\nStack Меню(размер -- 10)"); Console.WriteLine("1. Добавить элемент"); Console.WriteLine("2. Показать последний элемент по стеку."); Console.WriteLine("3. Удалить последний элемент."); Console.WriteLine("4. Показать stack элементов."); Console.WriteLine("5. Выход"); Console.Write("Выберите один из вариантов: "); int choice = Convert.ToInt32(Console.ReadLine()); switch (choice) { case 1: Console.WriteLine("Введите элемент : "); st.Push(Console.ReadLine()); break; case 2: Console.WriteLine("Последний элемент: {0}", st.Peek()); break; case 3: Console.WriteLine("Элемент удален: {0}", st.Pop()); break; case 4: st.Display(); break; case 5: System.Environment.Exit(1); break; } Console.WriteLine("\nДля продолжения нажмите любую клавишу..."); Console.ReadKey(); } } } interface StackADT { Boolean isEmpty(); void Push(Object element); Object Pop(); Object Peek(); void Display(); } class stack : StackADT { private int StackSize; public int StackSizeSet { get { return StackSize; } set { StackSize = value; } } public int top; Object[] item; public stack() { StackSizeSet = 10; item = new Object[StackSizeSet]; top = -1; } public stack(int capacity) { StackSizeSet = capacity; item = new Object[StackSizeSet]; top = -1; } public bool isEmpty() { if (top == -1) return true; return false; } public void Push(object element) { if (top == (StackSize - 1)) { Console.WriteLine("Stack заполнен!"); } else { item[++top] = element; Console.WriteLine("Объект продвинулся успешно!"); } } public object Pop() { if (isEmpty()) { Console.WriteLine("Stack пустой!"); return "No elements"; } else { return item[top--]; } } public object Peek() { if (isEmpty()) { Console.WriteLine("Stack пустой!"); return "No elements"; } else { return item[top]; } } public void Display() { for (int i = top; i > -1; i--) { Console.WriteLine("Объекты {0}: {1}", (i + 1), item[i]); } } } }
Вывод:
Stack Меню(размер — 10)
- Добавить элемент
- Показать последний элемент по стеку.
- Удалить последний элемент.
- Показать stack элементов.
- Выход
Выберите один из вариантов: 1
Введите элемент :
Лес
Объект продвинулся успешно!
Для продолжения нажмите любую клавишу…
Stack Меню(размер — 10)
- Добавить элемент
- Показать последний элемент по стеку.
- Удалить последний элемент.
- Показать stack элементов.
- Выход
Выберите один из вариантов: 1
Введите элемент :
Дом
Объект продвинулся успешно!
Для продолжения нажмите любую клавишу…
Stack Меню(размер — 10)
- Добавить элемент
- Показать последний элемент по стеку.
- Удалить последний элемент.
- Показать stack элементов.
- Выход
Выберите один из вариантов: 1
Введите элемент :
Ветер
Объект продвинулся успешно!
Для продолжения нажмите любую клавишу…
Stack Меню(размер — 10)
- Добавить элемент
- Показать последний элемент по стеку.
- Удалить последний элемент.
- Показать stack элементов.
- Выход
Выберите один из вариантов: 2
Последний элемент: Ветер
Для продолжения нажмите любую клавишу…
Stack Меню(размер — 10)
- Добавить элемент
- Показать последний элемент по стеку.
- Удалить последний элемент.
- Показать stack элементов.
- Выход
Выберите один из вариантов: 3
Элемент удален: Ветер
Для продолжения нажмите любую клавишу…
Stack Меню(размер — 10)
- Добавить элемент
- Показать последний элемент по стеку.
- Удалить последний элемент.
- Показать stack элементов.
- Выход
Выберите один из вариантов: 4
Объекты 2: Дом
Объекты 1: Лес
Для продолжения нажмите любую клавишу…