
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