Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практики / ПР4 / СД_П4

.pdf
Скачиваний:
0
Добавлен:
27.06.2025
Размер:
369.43 Кб
Скачать

public int Pop()

{

if (head == null)

{

throw new InvalidOperationException("Стек пуст.");

}

int topValue = tail.Value; RemoveItem(topValue); count--;

return topValue;

}

public int Peek()

{

if (tail == null)

{

throw new InvalidOperationException("Стек пуст.");

}

return tail.Value;

}

21

public int Count()

{

return count;

}

public void PrintStack()

{

if (head == null)

{

Console.WriteLine("Стек пуст."); return;

}

Node current = head; Console.Write("Элементы стека: "); do

{

Console.Write(current.Value + " "); current = current.Next;

} while (current != head);

22

Console.WriteLine();

}

}

// Класс очередь class Queue : MyList

{

private int count = 0;

public bool Enqueue(int element)

{

Add(element);

count++; return true;

}

public int Dequeue()

{

if (head == null)

{

throw new InvalidOperationException("Очередь пуста.");

}

23

int frontValue = head.Value; RemoveItem(frontValue); count--;

return frontValue;

}

public int PeekFront()

{

if (head == null)

{

throw new InvalidOperationException("Очередь пуста.");

}

return head.Value;

}

public int Count()

{

return count;

}

24

public void PrintQueue()

{

if (head == null)

{

Console.WriteLine("Очередь пуста."); return;

}

Node current = head; Console.Write("Элементы очереди: "); do

{

Console.Write(current.Value + " "); current = current.Next;

} while (current != head);

Console.WriteLine();

}

}

class Program

{

25

static void Main(string[] args)

{

MyList list = new MyList();

Stack stack = new Stack();

Queue queue = new Queue();

bool keepRunning = true;

while (keepRunning)

{

Console.WriteLine("1. Работа со списком"); Console.WriteLine("2. Работа со стеком"); Console.WriteLine("3. Работа с очередью"); Console.WriteLine("4. Выйти");

string choice = Console.ReadLine();

switch (choice)

{

case "1": WorkWithList(list); break;

26

case "2": WorkWithStack(stack); break;

case "3": WorkWithQueue(queue); break;

case "4":

keepRunning = false; break;

default:

Console.WriteLine("Неверный выбор."); break;

}

}

}

static void WorkWithList(MyList list)

{

bool keepRunning = true;

while (keepRunning)

{

27

Console.WriteLine("1. Добавить элемент в список"); Console.WriteLine("2. Удалить элемент из списка"); Console.WriteLine("3. Очистить список"); Console.WriteLine("4. Поиск элемента в списке"); Console.WriteLine("5. Удалить четные элементы"); Console.WriteLine("6. Удалить повторяющиеся элементы"); Console.WriteLine("7. Показать список"); Console.WriteLine("8. Вернуться в главное меню");

string choice = Console.ReadLine();

switch (choice)

{

case "1":

Console.Write("Введите элемент: ");

int addValue = int.Parse(Console.ReadLine()); list.Add(addValue);

break; case "2":

Console.Write("Введите элемент для удаления: "); int removeValue = int.Parse(Console.ReadLine()); bool removed = list.RemoveItem(removeValue);

28

Console.WriteLine(removed ? "Элемент удален." : "Элемент не найден."); break;

case "3":

bool cleared = list.Clear();

Console.WriteLine(cleared ? "Список очищен." : "Список пуст."); break;

case "4":

Console.Write("Введите элемент для поиска: "); int searchValue = int.Parse(Console.ReadLine()); bool found = list.Search(searchValue);

Console.WriteLine(found ? "Элемент найден." : "Элемент не найден."); break;

case "5": list.RemoveEven();

Console.WriteLine("Четные элементы удалены."); break;

case "6": list.RemoveDuplicates();

Console.WriteLine("Повторяющиеся элементы удалены."); break;

case "7": list.PrintList();

29

break; case "8":

keepRunning = false; break;

default:

Console.WriteLine("Неверный выбор."); break;

}

}

}

static void WorkWithStack(Stack stack)

{

bool keepRunning = true;

while (keepRunning)

{

Console.WriteLine("1. Добавить элемент в стек (Push)"); Console.WriteLine("2. Удалить верхний элемент из стека (Pop)"); Console.WriteLine("3. Взять верхний элемент из стека (Peek)"); Console.WriteLine("4. Число элементов в стеке"); Console.WriteLine("5. Показать стек");

30

Соседние файлы в папке ПР4