Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2012 DKA-201 Ivanov Vladimir.docx
Скачиваний:
17
Добавлен:
19.09.2019
Размер:
264.3 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования «Московский государственный

университет экономики, статистики и информатики (МЭСИ)»

Кафедра АсоИу

КУРСОВАЯ РАБОТА

по дисциплине

«Технологии программирования»

Тема: «Работа с динамическими типами данных. Двусвязный список. Редактирование элемента»

Выполнил: студент группы ДКА-201

Иванов В.

Проверил:

Старший преподаватель

Хрипков Д.В.

Москва 2012

Содержание

1. Динамическая память. Динамические структуры данных. Двунаправленный кольцевой список с головным элементом ………………………………………………………………….3

2. Постановка задачи………………...…………………………………………………………14

3. Описание работы…………………………………………………………………………….15

4. Тестирование…………………………………………………………………………………16

5. Список материалов…………………………………………………………………………..20

6. Листинг……………………………………………………………………………………….21

Динамические списки

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

Достоинства динамической памяти:

- экономичность и эффективность ее использования;

- возможность динамического изменения числа элементов в связанных структурах, например, списках (в статической памяти число элементов фиксировано для каждой компиляции);

- статические переменные существуют только в течение жизни блока, в котором они объявлены, а динамические - и после выхода из блока до окончания программы, а на практике – столько, сколько нужно по алгоритму;

- переменная, размещаемая динамически, не объявляется в разделе VAR и не имеет имени в программе («невидимка»). Компилятор не планирует выделение места в памяти под такие переменные.

Недостатки динамической памяти:

- усложняются процессы выделения и освобождения динамической памяти по сравнению со статической;

- усложняются алгоритмы обработки данных, представленных динамическими структурами.

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

  1. Указатель (на участок динамической памяти) определен как локальный объект автоматической памяти. В этом случае выделенная память будет недоступна при выходе за пределы блока локализации указателя, и ее нужно освободить перед выходом из блока.

  2. Указатель определен как локальный объект статической памяти. Динамическая память, выделенная однократно в блоке, доступна через указатель при каждом повторном входе в блок. Память нужно освободить только по окончании ее использования.

  3. Указатель является глобальным объектом по отношению к блоку. Динамическая память доступна во всех блоках, где "виден" указатель. Память нужно освободить только по окончании ее использования.

Все переменные, объявленные в программе, размещаются в одной непрерывной области памяти, которую называют сегментом данных. Такие переменные не меняют своего размера в ходе выполнения программы и называются статическими. Размера сегмента данных может быть недостаточно для размещения больших объемов информации. Выходом из этой ситуации является использование динамической памяти. Динамическая память – это память, выделяемая программе для ее работы за вычетом сегмента данных, стека, в котором размещаются локальные переменные подпрограмм и собственно тела программы.

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

Указатель может находиться в одном из трех состояний, а именно:

  1. не инициализирован;

  2. содержит адрес размещения;

  3. содержит значение предопределенной константы nil; такой указатель называется пустым, то есть не указывает ни на какую переменную.

Указатель со значением nil содержит 0 в каждом из четырех байтов.

Указатели можно

  1. сравнивать с другими указателями,

  2. присваивать им адрес или значение другого указателя,

  3. передавать как параметр.

Указатель нельзя

  1. отпечатать;

  2. вывести на экран.

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