Содержание
- 2. СТРУКТУРЫ ДАННЫХ Значения стандартных типов данных можно группировать и создавать структуры данных Структура данных представляется одной
- 3. МАССИВЫ Массив – это набор некоторого числа однотипных данных, расположенных в последовательных ячейках памяти Количество элементов
- 4. ПРОБЛЕМЫ РАБОТЫ С МАССИВАМИ Первым недостатком массивов является их фиксированный размер, который устанавливается при создании массива
- 5. СОЗДАНИЕ МАССИВА Статический массив. Располагается в статической или автоматической памяти using namespace std; const int n
- 6. СОЗДАНИЕ МАССИВА Динамический массив. Располагается в динамической памяти int *mas, n; int _tmain (int argc, _TCHAR*
- 7. ПРОБЛЕМЫ РАБОТЫ С МАССИВАМИ Второй недостаток массивов связан с тем, что элементы массива занимают смежные ячейки
- 8. СТРУКТУРЫ Еще одним примером структур данных являются структуры struct { char fio [30]; int age, code;
- 9. СТРУКТУРЫ Структуры также, как и массивы, имеют фиксированный размер, определяемый как сумма размеров их полей В
- 10. СТАТИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ В силу перечисленных особенностей массивы и структуры называют статическими структурами данных
- 11. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ Недостатков статических структур данных лишены структуры данных с изменяющимися во время выполнения программы
- 12. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ Переменные, входящие в состав динамических структур, необходимо каким-либо образом связывать друг с другом
- 13. ЛИНЕЙНЫЕ (ОДНОНАПРАВЛЕННЫЕ) СПИСКИ Самый простой способ соединить отдельные элементы между собой заключается в том, чтобы снабдить
- 14. ЛИНЕЙНЫЕ СПИСКИ Между элементами линейного списка существует отношение предыдущий-последующий
- 15. ТИП ДАННЫХ ЭЛЕМЕНТА СПИСКА Для элемента линейного списка можно определить следующий тип данных: struct element {
- 16. ЛИНЕЙНЫЙ СПИСОК P
- 17. ОПЕРАЦИИ НАД СПИСКАМИ Основными операциями при работе со списками являются: инициализация списка проверка списка на пустоту
- 18. ИНИЦИАЛИЗАЦИЯ СПИСКА Эта операция сводится к созданию пустого списка p = NULL;
- 19. ПРОВЕРКА СПИСКА НА ПУСТОТУ Проверка на пустоту заключается в вычислении значения выражения p == NULL, которое
- 20. ДОБАВЛЕНИЕ ЭЛЕМЕНТА В ПУСТОЙ СПИСОК Операция сводится к созданию нового элемента с помощью указателя на голову
- 21. ДОБАВЛЕНИЕ ЭЛЕМЕНТА В НЕПУСТОЙ СПИСОК Предполагается, что предварительно в списке тем или иным способом выделен некоторый
- 22. ДОБАВЛЕНИЕ ПОСЛЕ ВЫДЕЛЕННОГО Для этого необходимо выполнить следующие действия: определить рабочую переменную-указатель создать новый элемент с
- 23. ДОБАВЛЕНИЕ ПОСЛЕ ВЫДЕЛЕННОГО
- 24. ДОБАВЛЕНИЕ ПОСЛЕ ВЫДЕЛЕННОГО q= new elem; // создать новый элемент q->next = r->next; // связать его
- 25. ДОБАВЛЕНИЕ ПЕРЕД ВЫДЕЛЕННЫМ В этом случае задача сводится к предыдущей, а именно, нужно: добавить новый элемент
- 26. ДОБАВЛЕНИЕ ПЕРЕД ВЫДЕЛЕННЫМ q= new elem; // создать новый элемент q->next = r->next; // связать его
- 27. СПОСОБЫ ВВОДА ДАННЫХ В СПИСОК Операции добавления элементов в список могут различаться способом ввода данных Данные
- 28. СОЗДАНИЕ СПИСКА Операции добавления в список позволяют создавать списки как с прямым, так и с обратным
- 29. СОЗДАНИЕ СПИСКА В зависимости от выбора способа добавления получим прямой или инвертированный список
- 30. СОЗДАНИЕ ПРЯМОГО СПИСКА
- 31. СОЗДАНИЕ ИНВЕРТИРОВАННОГО СПИСКА P
- 32. ПОИСК В СПИСКЕ q = p; //поиск заданного значения x while (q->next != NULL && q->info!=x)
- 33. УДАЛЕНИЕ ЭЛЕМЕНТА ИЗ СПИСКА Особенность этой операции заключается в том, что удалить можно только элемент, следующий
- 34. УДАЛЕНИЕ ЭЛЕМЕНТА ИЗ СПИСКА
- 35. УДАЛЕНИЕ ПЕРВОГО ЭЛЕМЕНТА СПИСКА Особым случаем является удаление первого элемента списка, которое сводится изменению значения указателя
- 36. УДАЛЕНИЕ ПЕРВОГО ЭЛЕМЕНТА СПИСКА
- 37. ДОПОЛНИТЕЛЬНО: ПРОСМОТР СПИСКА Операция заключается в последовательном переборе всех элементов списка от первого до последнего Просмотр
- 38. ПРИМЕР РЕАЛИЗАЦИИ СПИСКА Рассмотрим пример реализации линейного списка в виде динамической структуры Тестирование приложения
- 39. ДВУНАПРАВЛЕННЫЕ СПИСКИ Двунаправленные списки отличаются от однонаправленных тем, что между их элементами существуют отношения предыдущий-последующий и
- 40. ДВУНАПРАВЛЕННЫЕ СПИСКИ Небольшое усложнение структуры элемента списка позволяет получить возможность просмотра его в двух направлениях: от
- 41. ОПЕРАЦИИ ДОБАВЛЕНИЯ И УДАЛЕНИЯ Реализации этих операций в двунаправленных списках имеют свои особенности благодаря возможности доступа
- 42. ОПЕРАЦИИ ДОБАВЛЕНИЯ ЭЛЕМЕНТА Добавить перед q= new elem; q->next = r; q->prev = r->prev; x =
- 43. ДОБАВЛЕНИЕ НА КРАЯХ СПИСКА Добавить первый q= new elem; q->next = p; q->prev = NULL; x
- 44. УДАЛЕНИЕ ЭЛЕМЕНТА Удалить перед текущим q=r->prev; r->prev = q->prev; q->prev->next =r; delete *q; Удалить после текущего
- 45. УДАЛЕНИЕ ЭЛЕМЕНТА В двунаправленном списке можно удалить и текущий элемент: r->prev->next = r->next; r->next->prev =r->prev; delete
- 46. КОЛЬЦЕВЫЕ СПИСКИ Кольцевой однонаправленный список получается из линейного «замыканием» последнего элемента на первый Соответственно, операция добавления
- 47. КОЛЬЦЕВЫЕ СПИСКИ Для двунаправленного кольцевого списка требуется установить две ссылки: первого элемента на последний, последнего элемента
- 48. РЕАЛИЗАЦИЯ СПИСКА Вышеописанная реализация списка в виде связной динамической структуры имеет ряд очевидных достоинств К числу
- 49. РЕАЛИЗАЦИЯ СПИСКА В МАССИВЕ Однако список может быть реализован и с помощью массива Для этого необходимо
- 50. РЕАЛИЗАЦИЯ СПИСКА В МАССИВЕ В этом случае поле ссылки имеет значение индекса следующего элемента Для обозначения
- 51. РЕАЛИЗАЦИЯ СПИСКА В МАССИВЕ При этом остается ограничение на длину списка, что позволяет реализовать списки с
- 52. СПИСОК КАК АБСТРАКТНАЯ СТРУКТУРА ДАННЫХ Понятие списка вводится в информатике как структура данных, представляющая соответствующий абстрактный
- 53. АБСТРАКТНЫЕ ТИПЫ ДАННЫХ В число этих операций входят операции создания и удаления элементов АТД Вся внутренняя
- 54. СПИСОК КАК АТД Конкретные реализации АТД называются структурами данных Абстрактный тип данных список может быть реализован
- 56. Скачать презентацию