Создание и обработка динамического списка на языке 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 целый тип

Вторая позиция

Результатом выполнения программы является вывод на экран пунктов меню:

· Запись – Ввод данных с клавиатуры.

· Вывод– Вывод данных на экран в виде таблицы.

· Обмен – Обмен элементов с заданными номерами.


Страница: