Автор работы: Пользователь скрыл имя, 18 Марта 2013 в 13:04, курсовая работа
Главной отличительной особенностью динамических структур является возможность изменения их структуры и размера в процессе работы программы, что очень важно. Это существенно повышает гибкость программы, размер структуры ограничивается только размером памяти машины. Однако такая гибкость обходится несколько большими затратами памяти на хранение самой структуры и её обработку, поскольку дополнительную память требуют указатели [1].
Алгоритмы работы с этими структурами очень сильно зависят от вида самой структуры.
Введение 3
1 Теоретически сведения 4
1.1 Объявление динамических структур данных 8
1.2 Доступ к данным в динамических структурах 10
1.3 Работа с памятью при использовании динамических структур 11
1.4 Ключевые термины 12
1.5 Краткие итоги 13
2 динамические структуры данных и стеком 14
2.1 Описание структуры данных "стек" 16
3 Разработка 17
3.1 Процедура добавления элемента 18
3.2 Процедура удаления элемента 20
3.3 Процедура очистки памяти 21
3.4 Распечатка содержимого 22
4 Инструкция пользователя 23
Заключение 24
Перечень используемой литературы 25
return Delete_Double_List(Begin_
}
Пример 2. Дана последовательность ненулевых целых чисел. Признаком конца последовательности является число 0. Найдите среди них первый наибольший отрицательный элемент. Если такого элемента нет, то выведите сообщение об этом.
В данной задаче будем использовать основные операции для работы с очередью, рассмотренные ранее. Приведем главную функцию и функцию для реализации поиска первого наибольшего отрицательного элемента.
//главная функция
int _tmain(int argc, _TCHAR* argv[]){
int n;
Queue *My_Queue;
My_Queue = new Queue();
Make_Queue(1,My_Queue);
while (My_Queue->End->Data != 0){
cout << "Введите значение ";
cin >> n;
Add_Item_Queue(n,My_Queue);
}
cout << "\nОчередь: \n";
Print_Queue(My_Queue);
Find_Max_Negative_Element(My_
system("pause");
return 0;
}
//функция поиска первого наибольшего отрицательного элемента
void Find_Max_Negative_Element(
int tmp;
int max=Extract_Item_Queue(Begin_
while (Begin_Queue->Begin->Data != 0) {
tmp = Extract_Item_Queue(Begin_
if (max > 0 || tmp < 0 && abs(tmp) < abs(max))
max = tmp;
}
if (max > 0) printf("Элементов нет!");
else printf("Есть такой элемент: %d", max);
}
FIFO (First Input - First Output) - это метод доступа к элементам очереди по принципу , "первый пришёл - первый вышел".
LIFO (Last Input - First Output) - это метод доступа к элементам стека по принципу "последним пришел - первым вышел"
Вершина стека - это доступный элемент стека.
Конец очереди - это позиция доступного для вставки в очередь элемента.
Начало очереди - это позиция доступного для извлечения из очереди элемента.
Очередь - это структура данных, представляющая собой последовательность элементов, образованная в порядке их поступления.
Стек - это структура данных, в которой новый элемент всегда записывается в ее начало (вершину) и очередной читаемый элемент также всегда выбирается из ее начала.
Стек и очередь - это частные случаи линейного списка.
Стек является списком, у которого доступен один элемент, называемый вершиной стека. Поместить или извлечь элемент можно только из вершины списка.
Стек и очередь как динамические структуры данных можно организовать на основе линейного списка.
Основными операциями со стеком являются: создание стека; печать (просмотр) стека; добавление элемента в вершину стека; извлечение элемента из вершины стека; проверка пустоты стека; удаление стека.
Очередь является списком, у которого доступны два элемента: начало и конец очереди. Поместить элемент можно только в конец очереди, а взять элемент только из ее начала.
Основными операциями с очередью являются: создание очереди; печать (просмотр) очереди; добавление элемента в конец очереди; извлечение элемента из начала очереди; проверка пустоты очереди; удаление очереди.
Стек и очередь более экономно расходуют адресное пространство по сравнению с однонаправленными и двунаправленными списками.
Информация о работе Динамические структуры данных. Организация данных в списковые структуры