Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KURSACh.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
754.69 Кб
Скачать

5.5Алгоритм функционирования системы

Вначале работы программы необходимо создать новый или открыть(или разархивировать) существующий список. Для создания нового списка достаточно кликнуть по кнопке «Создать» и после чего в диалоговом окне ввести имя списка, после этого становятся активными все пункты главного меню. В этот момент можно просматривать и редактировать список. Когда все необходимые действия совершены, то есть возможность сохранить список в файл или запаковать его в архив. Удобство сохранения списка заключается в том, что все уровни мультисписка сохраняются в один файл.

На рисунке 5.5 показан алгоритм функционирования программы.

Рисунок 5.5 – Алгоритм функционирования программы

5.5.1Алгоритм функции добавления элемента в список

Функция добавления получает в качестве параметров адрес начала списка, в который нужно вставить элемент, позицию, куда нужно вставить элемент, позицию нового элемента (индекс в массиве).

Функция работает по такому принципу: если функция поиска элемента выдала место вставки в средине массива указателей на элемент, то нужно произвести сдвиг всех элементов в массиве для освобождения необходимого индекса. После этого записываем указатель на элемент по освобождённому индексу, при этом увеличиваем количество элементов в массиве на 1.

Блок-схема функции добавления элемента в список изображена на рисунке 5.6

Рисунок 5.6 – Алгоритм добавления элемента в список

5.5.2Алгоритм поиска элемента в отсортированном списке

Функция поиска получает в качестве параметров указатель на начало списка элементов, ключ поиска, параметр функционального типа - функцию сравнения, а возвращает позицию указателя на искомый элемент и признак успешного поиска.

Функция имеет двойное назначение. Используется для нахождения указателя на элемент по ключу и индекса вставки указателя на новый элемент.

Функция работает методом половинного деления: присваиваем левой границе ноль, а правой – количество элементов в массиве, минус один (элементы начинаются с нуля). Найденный элемент присваиваем среднему элементу массива. Функцией сравнения проверяем: совпадает ли наш ключ со средним элементом в массиве. Если да то мы нашли место элемента в массиве, и выходим из процедуры. В противном случае проверяем полученый ключ - больше или меньше он среднего элемента в массиве. Данная проверка даст нам новые значения левой или правой границы. Обязательно нужно проверить не вышла ли наша левая граница за правую, и если не выйшла то алгоритм продолжается с начала. Иначе присваиваем позиции элемента нижнюю границу.

Блок-схема функции поиска методом половинного деления элемента в списке изображена на рисунке 5.7.

Рисунок 5.7 – Алгоритм поиска элемента

5.5.3Алгоритм удаления элемента из списка

Процедура удаления получает в качестве параметров адрес начала списка, из которого нужно удалить элемент и позицию указателя на удаляемый элемент.

Она работает так: перед ее вызовом функцией поиска находим позицию удаляемого элемента. Освобождаем память, которую он занимает. Если элемент был в средине массива указателей, то производим сдвиг элементов. В конце уменьшаем количество элементов в массиве на 1.

Блок-схема функции удаления элемента изображена на рисунке 5.8.

Рисунок 5.8 – Алгоритм удаления элемента

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]