Создание и обработка динамического списка на языке c++Рефераты >> Программирование и компьютеры >> Создание и обработка динамического списка на языке c++
1Постановка задачи
Необходимо создать однонаправленный динамический список,, содержащий информацию о реках. Список должен состоять из 4 полей:
1 поле – название реки, 2 поле - длина реки, 3 поле – площадь реки, 4 поле количество притоков.
Необходимо реализовать следующие действия со списком
§ Ввод динамического списка
§ Вывод списка
§ Обмен элементов (задаются номера элементов, которые нужно поменять местами)
§ Удаление последнего элемента в списке
Программу построить по процедурному принципу.
Пользовательский интерфейс реализовать в виде меню.
2 Разработка метода решения задачи и её формализация
Использование динамических величин предоставляет программисту ряд дополнительных возможностей. Во-первых, подключение динамической памяти позволяет увеличить объем обрабатываемых данных. Во-вторых, если потребность в каких-то данных отпала до окончания программы, то занятую ими память можно освободить для другой информации. В-третьих, использование динамической памяти позволяет создавать структуры данных переменного размера.
Работа с динамическими величинами связана с использованием ссылочного типа данных. Величины, имеющие ссылочный тип, называют указателями.
Указатель содержит адрес поля в динамической памяти, хранящего величину определенного типа. Сам указатель располагается в статической памяти.
Адрес величины — это номер первого байта поля памяти, в котором располагается величина. Размер поля однозначно определяется типом.
Списком называется структура данных, каждый элемент которой посредством указателя связывается со следующим элементом.
Из определения следует, что каждый элемент списка содержит поле данных (Inf ) (оно может иметь сложную структуру) и поле ссылки на следующий элемент (Next). Поле ссылки последнего элемента должно содержать пустой указатель (Null)
Рисунок 1
Здесь Inf — информационная часть звена списка (величина любого простого или структурированного типа, кроме файлового), Next — указатель на следующее звено списка; First — указатель на заглавное звено списка.
Согласно определению, список располагается в динамически распределяемой памяти, в статической памяти хранится лишь указатель на заглавное звено. Структура, в отличие от массива, является действительно динамической: звенья создаются и удаляются по мере необходимости, в процессе выполнения программы.
Однонаправленный список – это список, в котором указатель ссылается только на следующее звено списка (как показано на рисунке).
3 Разработка состава и структуры данных и результатов
Поля исходных данных, программы, разрабатываемой в данной курсовой, будут иметь следующий вид:
Таблица 1
Название |
Длина |
Площадь |
Притоки |
Название – название реки
Длина – длина реки
Площадь – площадь бассейна реки
Притоки – количество притоков
В таблице приведены используемые данные:
Таблица 2
Обозначение |
Тип |
Назначение |
a |
Char (символьный) |
Название |
b |
Int целый тип |
Длина |
c |
Int целый тип |
Площадь |
d |
Int целый тип |
Притоки |
list_head |
Ссылочный тип |
Ссылка на начало списка |
Sheet |
Struct |
Структура Sheet |
new_sheet |
Struct |
Создание структуры Sheet |
first |
Ссылочный тип |
Меняемый элемент |
second |
Ссылочный тип |
Меняемый элемент |
cur |
Ссылочный тип |
Указатель |
s |
Тип Sheet |
Переменная |
menuc |
Char (символьный) |
Меню |
code |
Char (символьный) |
Переменная |
p1 |
Int целый тип |
Первая позиция |
p2 |
Int целый тип |
Вторая позиция |
Результатом выполнения программы является вывод на экран пунктов меню:
· Запись – Ввод данных с клавиатуры.
· Вывод– Вывод данных на экран в виде таблицы.
· Обмен – Обмен элементов с заданными номерами.