сд4
.pdfОписание классов, методов и параметров представлено в таблице 2.1.
Таблица 2.1 — Описание классов и методов
Класс |
Назначение |
Методы |
Назначение |
Параметры |
|
|
|
|
|
|
|
|
Узел |
|
|
|
|
Node |
циклическог |
Node |
Создание нового узла |
int value |
|
|
о списка |
|
|
|
|
|
|
|
|
|
|
|
|
Add |
Добавить элемент в |
int element |
|
|
|
конец списка |
|||
|
|
|
|
||
|
|
|
|
|
|
|
|
RemoveItem |
Удалить указанный |
int element |
|
|
|
элемент из списка |
|||
|
|
|
|
||
|
|
|
|
|
|
|
|
Clear |
Очистить список |
bool |
|
|
|
|
|
|
|
List |
Двусвязный |
Search |
Найти элементы в |
int element |
|
список |
списке по образцу |
||||
|
|
|
|||
|
|
|
|
|
|
|
|
MergeSortedLists |
Объединить два списка |
|
|
|
|
и отсортировать |
|
||
|
|
|
|
||
|
|
|
|
|
|
|
|
Sort |
Отсортировать список |
|
|
|
|
|
|
|
|
|
|
PrintList |
Вывести список на |
|
|
|
|
экран |
|
||
|
|
|
|
||
|
|
|
|
|
11
Реализована блок-схема алгоритма Sort в классе List (рисунок 2.8).
Рисунок 2.8 — Блок-схема алгоритма Sort в классе List
Для практической работы №4 созданы классы для стека и очереди. Листинг кода представлен в приложении А.
12
Реализован метод Push, который на основе метода Add из класса List до-
бавляет элемент в стек (рисунки 2.9-2.10). В данном методе создаётся новый узел, который хранит в себе полученный элемент и становится вершиной стека.
Рисунок 2.9 — Метод Push из класса Stack
Рисунок 2.10 — Метод Add из класса List
Реализован метод Pop, который на основе метода RemoveLast из класса List
удаляет элемент из стека (рисунки 2.11-2.12). В методе предусмотрена проверка на наличие элементов в стеке, если их нет, то выводится ошибка. Данный метод принимает значение верхнего элемента стека и перемещает вершину на следую-
щий элемент.
13
Рисунок 2.11 — Метод Pop из класса Stack
Рисунок 2.12 — Метод RemoveLast из класса List
Реализован метод Peek, который с помощью метода PeekLast из класса List
выводит верхний элемент из стека без удаления (рисунок 2.13-2.14). В методе предусмотрена проверка на наличие элементов в стеке, если их нет, то выводится ошибка. Данный метод выводит значение из верхнего элемента.
14
Рисунок 2.13 — Метод Peek из класса Stack
Рисунок 2.14 — Метод PeekLast из класса List
Реализован метод Count, который выводит количество элементов в стеке (рисунок 2.15).
Рисунок 2.15 — Метод Count из класса Stack
Реализован метод Enqueue, который на основе метода Add из класса List
добавляет новый элемент в конец очереди (рисунок 2.16).
Рисунок 2.16 — Метод Enqueue из класса Queue
Был реализован метод Dequeue, который на оснрве метода RemoveFirst из класса List удаляет первый элемент из очереди (рисунки 2.17-2.18).
15
Рисунок 2.17 — Метод Dequeue из класса Queue
Рисунок 2.18 — Метод RemoveFirst из класса List
Реализован метод Peek, который на основе метода PeekFirst из класса List
показывает первый элемент в очереди без удаления (рисунки 2.19-2.20).
Рисунок 2.19 — Метод Peek из класса Queue
16
Рисунок 2.20 — Метод PeekFirst из класса List
17
3Заключение
Входе выполнения практической работы была реализована программа инициализации списка, стека, очереди и методы для работы с ним с помощью классов Node, List, Stack и Queue. Созданы таблица классов и блок-схема алгоритма работы метода Sort.
18
Приложение А
using System;
public class Node
{
public int Value; public Node Next;
public Node(int value)
{
Value = value;
Next = null;
}
}
public class List
{
public Node head; public Node tail; private int count;
public List()
{
head = null; tail = null; count = 0;
}
public int Count()
{
19
return count;
}
public bool Add(int element)
{
Node newNode = new Node(element); if (head == null)
{
head = newNode; tail = newNode;
tail.Next = head; // Циклическая связь
}
else
{
tail.Next = newNode; tail = newNode;
tail.Next = head; // Поддерживаем циклическую структуру
}
count++; return true;
}
public bool RemoveFirst(out int element)
{
element = -1;
if (head == null) return false; // Список пуст
element = head.Value; if (head == tail)
{
20
