Практика 4 - Стек, очередь - СФ
.pdfМинистерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
ТОМСКИЙ ГОСУДАРСТВЕЕНЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра комплексной информационной безопасности электронно-
вычислительных систем (КИБЭВС)
Стек, очередь Отчет по практической работе №4
По дисциплине «Структуры данных»
Студент гр. ххххх
________ ххххх
________
Принял Преподаватель КИБЭВС
________ ххххх
________
Томск 2022
Задание
Продемонстрировать типовые функции работы со стеком:
1)удалить из стека - возвращать удаляемый элемент возвращается по результату работы метода;
2)добавить в стек;
3)число элементов стека;
4)взять верхний элемент стека без удаления.
Очередь:
1)число элементов в очереди;
2)удалить из очереди;
3)добавить в очередь;
4)получить первый элемент из очереди без удаления из нее.
2
Содержание
1 Введение …………………………………………………………………………... 4
2 Ход работы ………………………………………………………………………... 5
2.1Реализация стека …………………………………………………………. 5
2.2Реализация очереди ……………………………………………………… 7 3 Заключение ……………………………………………………………………… 10
Приложение А ………………………………………………………………..…… 11
3
1 Введение
Цель работы заключается в том, чтобы овладеть навыками работы с метода стека и очереди, а также их реализации на языке программирования C#.
4
2 Ход работы
Стек — это структура данных, представляющая собой список элементов,
организованных по принципу «последним пришёл — первым вышел».
Очередь – это последовательный список переменной длины, в котором включение элементов производится на одном конце, а исключение на другом, то есть по принципу «первым пришел - первым ушел».
2.1 Реализация стека
Для реализации стека был использован метод NodeStack<T>, а также добавлены функции удаления элемента, добавления элемента, функция нахождения длины стека, а также вывода верхнего элемента без его удаления.
Для добавления элементов в стек, использовался метод Push. Реализация добавления элементов представлена на рисунке 2.1. Последний элемент передает ссылку на добавленный, и добавленный элемент становится последним.
Рисунок 2.1 - метод Push для стека
Для удаления элемента был написан метод Pop (рисунок 2.2).
Предпоследний элемент становится последним. Последний элемент присваивается во временную переменную и выводится на консоль.
5
Рисунок 2.2 - метод Pop для стека
При выполении метода Peek находится верхний элемент стека и выводится на консоль, элемент не удаляется (рисунок 2.3).
Рисунок 2.3 - Метод Peek для стека
При выводе дины стека выполняется метод CountStack, который возвращает счетчик элементов стека (рисунок 2.4).
Рисунок 2.4 - Счетчик элементов стека
6
Работа программы представлена на рисунке 2.5.
Рисунок 2.5 -Работа программы стека
2.2 Реализация очереди
Для реализации очереди был создан класс Queue, были реализованы методы добавления элемента в очередь, удаления первого элемента в очереди,
нахождение первого и вывод длины очереди.
При добавлнеии последний элемент присваивается в новую переменную, а tail присваивается добавленный элемент, и из новая переменная создает ссылку на tail. На рисунке 2.6 представлен код метода.
7
Рисунок 2.6 - Добавление в очередь
Когда удаляется первый элемент, то первому элементу присваивается ссылка на второй элемент (рисунок 2.7).
Рисунок 2.7 - Удаление первого элемента очереди
При выводе первго элемента очереди метод возвращает ссылку на элемент.
На рисунке 2.8 представлен код программы.
Рисунок 2.8 - Вывод первого элемента очереди
8
При выводе длины очереди метод возвращет счетчик элементов очереди
(рисунок 2.9).
Рисунок 2.9 - Количество элементов очереди
Работа программы очереди представлена на рисунке 2.10.
Рисунок 2.10 - Работа программы очереди
Листинг программы представлен в приложениии А.
9
3Заключение
Впроцессе выполнения программы были получены навыки работы со стеком и очередью, разработаны методы для добавления, удаления, нахождения верхнего элемента списка и очереди, а также нахождения их длины.
10