Практики(Вариант №7) / Практическая работа №4
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра комплексной информационной безопасности электронновычислительных систем (КИБЭВС)
СТЕКИ И ОЧЕРЕДИ Отчет по практической работе №4 по дисциплине «Структуры данных»
Студент гр.
________
__.__.2025
Принял
Преподаватель кафедры КИБЭВС
________ Д.Р. Уразаев __.__.2025
Томск 2025
Задание
Реализовать на базе классов из практики 3 работу с очередью и со стеком. Продемонстрировать типовые функции работы со стеком: -
1.удалить из стека - возвращать удаляемый элемент возвращается по результату работы метода,
2.добавить в стек,
3.число элементов стека,
4.взять верхний элемент стека без удаления.
Очередь:
1.число элементов в очереди,
2.удалить из очереди
3.добавить в очередь.
получить первый элемент из очереди без удаления из нее.
2
|
Оглавление |
Задание................................................................................................................... |
2 |
Введение................................................................................................................. |
4 |
1 ХОД РАБОТЫ.................................................................................................... |
5 |
Заключение............................................................................................................. |
9 |
Приложение А...................................................................................................... |
10 |
3
Введение
Целью данной работы является реализация классов для работы со стеком и очередью на основе ранее изученных концепций.
4
1 ХОД РАБОТЫ
Push: Добавляет элемент на верхушку стека. Если стек был пуст, новый элемент становится и верхом, и основанием стека (рис.1)
Рисунок 1 — Push
Pop: Удаляет и возвращает верхний элемент стека. Если стек пуст, вызывает ошибку. При удалении верхнего элемента обновляется указатель на верх (рис. 2)
Рисунок 2 — Pop
Peek: Возвращает верхний элемент стека без его удаления. Если стек пуст, вызывает ошибку (рис. 3)
5
Рисунок 3 — Peek
Size: Возвращает количество элементов в стеке. Считывает их, проходя по всем элементам, начиная с верхнего (рис. 4)
Рисунок 4 — Size
Print: Выводит все элементы стека в порядке от верхнего к нижнему. Позволяет визуализировать текущие элементы стека (рис. 5)
Рисунок 5 — Print
6
Enqueue: Добавляет элемент в конец очереди. Если очередь была пустой, новый элемент становится и первым, и последним (рис. 6)
Рисунок 6 — Enqueue
Dequeue: Удаляет и возвращает первый элемент очереди. Если очередь пуста, вызывает ошибку. Обновляет указатель на первый элемент после удаления (рис. 7)
Рисунок 7 - Dequeue
7
Peek: Возвращает первый элемент очереди без его удаления. Если очередь пуста, вызывает ошибку (рис. 8)
Рисунок 8 — Peek
Count: Возвращает количество элементов в очереди. Считывает их, проходя от первого до последнего элемента (рис. 9)
Рисунок 9 — Count
Print: Выводит все элементы очереди в порядке от первого к последнему. Позволяет вывести текущие элементы очереди (рис. 10)
Рисунок 10 — Print
8
Заключение
В ходе работы были успешно реализованы функциональные классы для стека и очереди. Мы продемонстрировали типовые операции, включая добавление и удаление элементов, а также получение значений без удаления.
9
Приложение А
(обязательное) Код программы
using System; public class Node
{public int Value; public Node Next; public Node(int value)
{Value = value; Next = null;
} }
public class MyStack
{
private Node top; private int count;
public MyStack()
{top = null; count = 0;
} |
|
|
// добавить элемент в стек |
|
|
public bool Push(int element) |
|
|
{ |
Node newNode = new Node(element); |
|
|
|
|
|
newNode.Next = top; |
|
|
top = newNode; |
|
|
count++; |
|
} |
return true; |
|
|
|
|
// удалить и вернуть верхний элемент стека |
||
public int Pop() |
|
|
{ |
if (top == null) |
|
|
|
|
|
throw new InvalidOperationException("Стек пуст"); |
|
|
int value = top.Value; |
|
|
top = top.Next; |
|
|
count--; |
|
} |
return value; |
|
|
|
|
// вернуть верхний элемент без удаления |
|
|
public int Peek() |
|
|
{ |
if (top == null) |
|
|
|
|
|
throw new InvalidOperationException("Стек пуст"); |
|
} |
return top.Value; |
|
|
|
|
// количество элементов в стеке |
|
|
public int Size |
|
|
{ |
get { return count; } |
|
|
10 |
|
|
|
|
