Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба Богдик.doc
Скачиваний:
6
Добавлен:
11.06.2015
Размер:
137.73 Кб
Скачать

Основные алгоритмы работы с очередью

  1. Создание очереди.

Создаём указатель на первый элемент (изначально контейнер пуст).

  1. Поиск контейнера.

Вводим критерий поиска, после чего будет произведён проход по очереди. Если объект будет найден, то на выбор будет предложено изменить или извлечь объект.

Иначе будет выведено сообщение, что по данному критерию поиска объект не найден.

  1. Проход по очереди в прямом направлении (итеративный).

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

  1. Проход по списку в обратном направлении.

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

  1. Добавление элемента в конец очереди.

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

  1. Удаление дублирующихся элементов.

Проходим по очереди, используя два указателя (один опережает другой на шаг). Сравниваем значения полей, если совпадают, то полю nextпредшествующего элемента присваиваем указатель на следующий элемент после удаляемого (p->next->next), а полюprevследующего за удаляемым элементом присваиваем значение элемента перед удаляемым. (Если предшествующий элемент нужно получить проходом в прямом направлении) Так как на удаляемый элемент теперь нет ссылки, то до него нельзя добраться через список. Память из-под него можно высвободить.

  1. Подсчёт количества элементов контейнера.

Аналогично итеративному проходу, но с добавлением переменной для подсчёта количества элементов контейнера.

  1. Реверс очереди

Проходим по элементам очереди меняя их местами (первый с последним, второй с предпоследним и т.д.).

  1. Сохранение в файл.

Сохраняем содержимое очереди в файл (имя файла запрашивается у пользователя).

Данные разделяем символами перехода на новую строку.

  1. Считывание из файла.

Считываем содержимое из файла (имя файла запрашивается у пользователя, в случае отсутствия файла выдаётся сообщение) построчно.

  1. Удаление всего списка.

Обходим очередь, освобождая память из-под элементов.

Структура папок проекта

Руководство пользователя

Для начала работы с программой нужно запустить файл queue.exe. Появится окно консольного приложения с начальным меню. Обычно экран разделён на две области: основная область, отображающая список, элемент или другую информацию, и меню со списком доступных команд. Слева от каждой команды указывается соответствующая клавиша (0 – 9). При нажатии клавиши, не соответствующей никакой команде, выводится сообщениеневерные данные.

Начальное менюпредлагает создать очередь (1 – Новая очередь ) либо загрузить готовый из текстового файла (2 – Открыть из файла). (Если возникли проблемы с открытием файла, или указанного файла не существует, будет выведено сообщение -ошибка: Файл не найден ). При нажатии0в начальном меню программа завершает работу.

Меню списка (появляется только при созданной очереди) отображает основные команды для работы со списком:

1 – Добавить элемент

Добавление элемента в конец очереди. Будет предложено ввести строку, которая станет новым элементом очереди.

2 – Поиск элемента

Поиск элемента, будет предложено ввести критерий поиска (строку). Программа выведет первый элемент, содержащий эту строку. Возможные ситуации: «Элемент найден» : будет предложено изменить или извлечь элемент; и «Не найдено соответствующих элементов»

(когда элемент по данным критериям поиска не найден).

3 – Вывод на экран

Вывод содержимого очереди на экран в прямом или обратном порядке, в зависимости от выбора пользователя.

4 – Удаление повторяющихся элементов

Удаление дублирующихся элементов.

5 – Количество элементов

Подсчёт количества элементов в очереди и вывод результата на экран.

6 – Реверс

Реверс.

7 – Запись в файл

Запись содержимого очереди в файл (длина имени файла не более 30 символов).

8 – Удаление очереди

Удаление всех элементов очереди и освобождение памяти.

0 – Выход

Выход из меню работы со списком, при этом будет предложено сохранить текущие данные в файл перед завершением работы (если пользователь нажмёт отказ – все несохранённые данные будут потеряны).