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

сд4

.pdf
Скачиваний:
3
Добавлен:
01.12.2024
Размер:
649 Кб
Скачать
☆

Описание классов, методов и параметров представлено в таблице 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

Соседние файлы в предмете Структуры данных