- •Списки, понятие однонаправленного списка, двунапрвленного списка, реализация списка, кольцевой сп.
- •Определение структуры данных, отличие динамических и статистических, реализация атд
- •Определение атд, связной структуры данных, структурированного типа данных, массива.
- •Определение данных, информации, групп типов данных
- •Связное представление данных, достоинство, недостатки
- •Основные функции над списками
- •35. Реализация списков с помощью указателей
- •36. Основные функции над списками
- •37. Определение стека, массива, множества, структуры данных
- •38. Понятие методов сортировки массивов, привести методы нескольких сортировок
- •41. Понятие массивов, дескриптора массивов, свободный массив(его достоинства и недостатки)
- •43. Определение дека, множества, очереди с приоритетом, информации
- •43. Определение дека, множества, очереди с приоритетом, информации
- •44. Факторы влияющие на выбор алгоритма сортировки массива
- •47. Стратегии сортировки массивов
- •51. Применение стеков
- •52. Определение данных, структуры данных, список данных, указатели
Определение данных, информации, групп типов данных:
Данные - поддающееся многократной интерпретации представление информации в формализованном виде, пригодном для передачи, связи или обработки
Информация - знания о предметах, фактах, идеях и т. д., которыми могут обмениваться люди в рамках конкретного контекста
Группы типов данных
Связное представление данных, достоинства, недостатки:
Динамические структуры по определению характеризуются отсутствием физической смежности элементов структуры в памяти непостоянством и непредсказуемостью размера (числа элементов) структуры в процессе ее обработки.
Достоинства:
размер структуры ограничивается только доступным объемом машинной памяти;
при изменении логической последовательности элементов структуры требуется не перемещение данных в памяти, а только коррекция указателей.
Недостатки:
работа с указателями требует, как правило, более высокой квалификации от программиста;
на поля связок расходуется дополнительная память;
доступ к элементам связной структуры может быть менее эффективным по времени.
Основные функции над списками
Определение АТД, вектора данных, массива
Абстра́ктный тип да́нных (АТД) - это математическая модель для типов данных, где тип данных определяется поведением (семантикой) с точки зрения пользователя данных, а именно в терминах возможных значений, возможных операций над данными этого типа и поведения этих операций.
Вектор данных - это упорядоченный набор данных, размещенных в памяти на одинаковом "расстоянии" друг от друга.
Массив - тип или структура данных в виде набора компонентов (элементов массива), расположенных в памяти непосредственно друг за другом.
Структурированный тип данных
Структурированные типы данных определяют наборы однотипных или разнотипных компонент.
Типы компонент образуются из других типов (простых, структурированных, указателей и т. д.)
данных. В языке Паскаль существуют следующие структурированные типы:
- тип-массив;
- тип-запись;
- тип-множество;
- тип-файл.
В Turbo Pascal имеется еще два структурированных типа:
- тип-строка string и
- тип-строка PChar, являющиеся разновидностями массива.
В дальнейшем объекты структурированных типов для краткости будут называться теми же
именами, что и их типы, без указания слова "тип": массив, запись, множество, файл, строка.
В стандарте языка существуют упакованные (packed) и неупакованные структурированные
типы. В Turbo Pascal слово packed, характеризующее упакованный тип, не оказывает никакого
влияния; в случае, когда это возможно, упаковка данных осуществляется автоматически.
Списки, понятие однонаправленного списка, двунапрвленного списка, реализация списка, кольцевой сп.
Линейный однонаправленный список — это структура данных, состоящая из элементов одного типа, связанных между собой последовательно посредством указателей. Каждый элемент списка имеет указатель на следующий элемент. Последний элемент списка указывает на NULL.
Двунаправленный (двусвязный) список – это структура данных, состоящая из последовательности элементов, каждый из которых содержит информационную часть и два указателя на соседние элементы
Циклический (кольцевой) список – это структура данных, представляющая собой последовательность элементов, последний элемент которой содержит указатель на первый элемент списка, а первый (в случае двунаправленного списка) – на последний.
Определение структуры данных, отличие динамических и статистических, реализация атд
Структура данных (англ. data structure) — программная единица, позволяющая хранить и обрабатывать множество однотипных и/или логически связанных данных в вычислительной технике.
Динамические структуры данных – это структуры данных, память под которые выделяется и освобождается по мере необходимости
Статические структуры представляют собой структурированное множество примитивных, базовых, структур. Поскольку статические структуры отличаются отсутствием изменчивости, память для них выделяется автоматически - как правило, на этапе компиляции или при выполнении - в момент активизации того программного блока, в котором они описаны.
Реализация списков с помощью указателей
Вставка элемента в список
Упорядочивание списка. Вставка элемента в середину списка
Сформируем список целых чисел, упорядоченный по неубыванию, т.е. каждый следующий элемент списка должен быть больше или равен предыдущему.
Для решения этой задачи рассмотрим основные части алгоритма, который мы будем воплощать в программе.
После ввода очередного числа с клавиатуры определяем его место в списке. Заметим, что при этом элемент может быть вставлен либо в начало списка, либо в конец его, либо в середину. Первый и второй случаи мы уже рассмотрели выше. Остановимся на третьем случае.
Для того чтобы вставить в список элемент со значением Digit между двумя элементами, нужно найти эти элементы и запомнить их адреса (первый адрес – в переменной px, второй – в dх), после чего установить новые связи с элементом, в котором хранится значение Digit.
Определение стека, массива, множества, структуры данных.
Стек — структура данных, представляющая из себя список элементов, организованных по принципу LIFO.
Массив - тип или структура данных в виде набора компонентов (элементов массива), расположенных в памяти непосредственно друг за другом.
Множество — тип и структура данных в информатике, является реализацией математического объекта множество. Данные типа множество позволяют хранить ограниченное число значений определённого типа без определённого порядка.
Удаление элемента из списка, перестановка элементов в односвязном списке, слияние списков.
Области применения массивов
Определение дескриптора, данных, типа данных, записи
Дескри́птор (от лат. descriptor — описывающий) — лексическая единица (слово, словосочетание) информационно-поискового языка, служащая для описания основного смыслового содержания документа или формулировки запроса при поиске документа (информации) в информационно-поисковой системе.
Данные - поддающееся многократной интерпретации представление информации в формализованном виде, пригодном для передачи, связи или обработки
Информация - знания о предметах, фактах, идеях и т. д., которыми могут обмениваться люди в рамках конкретного контекста
Тип данных — класс данных, характеризуемый членами класса и операциями, которые могут быть к ним применены (ISO/IEC/IEEE 24765-2010). Тип данных — категоризация абстрактного множества возможных значений, характеристик и набор операций для некоторого атрибута (IEEE Std 1320.2-1998).
Понятие массивов, дескриптора массивов, свободный массив
Массив (в некоторых языках программирования также таблица, ряд, матрица) — тип или структура данных в виде набора компонентов (элементов массива), расположенных в памяти непосредственно друг за другом.
Свободный массив. Это такой динамический массив, в котором размеры строк могут быть различными.
Понятие полу статистические структуры данных
Полустатические структуры данных характеризуются такими признаками:
имеют переменную длину и простые процедуры ее изменения;
изменение длины структуры происходит в определенных пределах, не превышая какого-то максимального (предельного) значения.
Определения дека, множества, очереди с приоритетом,
Дека — очередь с двумя концами. Дека является последовательным списком, в котором включение и исключение элементов может осуществляться с любого из двух концов списка.
Очередь с приоритетом (англ. priority queue) — абстрактный тип данных в программировании, поддерживающий две обязательные операции — добавить элемент и извлечь максимум[1](минимум). Предполагается, что для каждого элемента можно вычислить его приоритет — действительное число или в общем случае элемент линейно упорядоченного множества[2].
Факторы, влияющие на выбор алгоритм сортировки массива
Стек, представление стека в виде
Стек (англ. stack — стопка; читается стэк) — абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO
Определение указателя, данных, базового элемента структуры данных, записи, файла
Стратегии сортировки массивов
Сортировкой или упорядочением массива называется расположение его элементов по возрастанию (или убыванию). Если не все элементы различны, то надо говорить о неубывающем (или невозрастающем) порядке.
Вообще говоря, это большая и сложная тема, в которой известно много различных алгоритмов. Критерии оценки эффективности этих алгоритмов могут включать следующие параметры:
количество шагов алгоритма, необходимых для упорядочения;
количество сравнений элементов;
количество перестановок, выполняемых при сортировке.
Операции над стеками
Стекпредставляет собой организацию данных, из которой первым извлекается тот элемент, который был добавлен в нее последним, т. е. последовательность элементов, включение и исключение элементов из которой производится только с одного конца, – таким образом, доступ к элементам происходит по принципу LIFO (last in first out).
Операция добавления нового элемента (запись в стек или включение элемента вершины стека) называется операцией проталкивания в стек и имеет общепринятое название Push.
Операция исключения элемента из вершины стека (удаление элемента) называется операцией выталкивания из стека и имеет общепринятое название Pop.
