В этом примере мы напишем программу на языке 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: Лес
Для продолжения нажмите любую клавишу…
