Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
вопросы к экзамену.docx
Скачиваний:
5
Добавлен:
28.12.2024
Размер:
430.24 Кб
Скачать
  1. Линейные структуры данных. Списки. Динамический массив.

Линейные структуры — это упорядоченные структуры, в которых адрес элемента однозначно определяется его номером. Все элементы расположены в форме последовательности.

Массив — набор однотипных переменных, доступ к которым осуществляется по индексу. Динамический массив может изменять свой размер в зависимости от количества элементов в нём.

Операции –

get, set, size – O(1)

del, add – O(n)

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

  1. Линейные структуры данных. Списки. Связный и двусвязный списки.

Связный список — это структура данных, в которой каждый элементы хранит ссылку на своего соседа.

Списки, в отличие от массивов, удобны тем, что они не имеют фиксированного размера. Мы легко можем добавлять в список сколько угодно элементов. Удаление элементов из списка: мы просто предыдущему элементу ставим ссылку сразу на следующий элемент.

Списки бывают односвязные и двусвязные. – по количеству указателей

 

Связный список является простейшим типом данных динамической структуры, состоящей из элементов (узлов). Каждый узел включает в себя в классическом варианте два поля:

  • данные (в качестве данных может выступать переменная, объект класса или структуры и т. д.)

  • указатель на следующий узел в списке.

Односвязный список – голова-ссылки-null

Характеристики: длина, типизированность, сортированность

Двусвязный: указывает на предыдущий и последующий элементы.

Недостатки:

  • сложность прямого доступа к элементу, а именно определения физического адреса по его индексу (порядковому номеру) в списке

  • на поля-указатели (указатели на следующий и предыдущий элемент) расходуется дополнительная память (в массивах, например, указатели не нужны)

  • некоторые операции со списками медленнее, чем с массивами, так как к произвольному элементу списка можно обратиться, только пройдя все предшествующие ему элементы

  1. Линейные структуры данных. Очереди. Кольцевые очереди. Стеки. Деки. Алгоритм сортировочной станции.

Линейные структуры — это упорядоченные структуры, в которых адрес элемента однозначно определяется его номером. Все элементы расположены в форме последовательности.

О́чередь — абстрактный тип данных с дисциплиной доступа к элементам «первый пришёл — первый вышел» (FIFO, англ. first in, first out). Добавление элемента (принято обозначать словом enqueue — поставить в очередь) возможно лишь в конец очереди

Кольцевая очередь работает по принципу FIFO (First – In – First – Out): первым пришел первым вышел. Отличие между кольцевой очередью и обычной очередью заключается в способе выхода из очереди первого элемента. В кольцевой очереди первый элемент перемещается в конец очереди. 

Сначала в очередь добавляются элементы до тех пор, пока не будет достигнут какой-то максимум. Элементы добавляются в конец очереди.

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

Стек (от англ. stack — стопка) — структура данных, представляющая из себя упорядоченный набор элементов, в которой добавление новых элементов и удаление существующих производится с одного конца, называемого вершиной стека. Притом первым из стека удаляется элемент, который был помещен туда последним, то есть в стеке реализуется стратегия «последним вошел — первым вышел» (last-in, first-out — LIFO). Примером стека в реальной жизни может являться стопка тарелок: когда мы хотим вытащить тарелку, мы должны снять все тарелки выше. Вернемся к описанию операций стека:

  • empty— проверка стека на наличие в нем элементов,

  • push (запись в стек) — операция вставки нового элемента,

  • pop (снятие со стека) — операция удаления нового элемента.

Реализации

Для стека с n элементами требуется O(n) памяти, так как она нужна лишь для хранения самих элементов.

Дек

Деком (англ. deque – аббревиатура от double-ended queue, двухсторонняя очередь) называется структура данных, в которую можно удалять и добавлять элементы как в начало, так и в конец. Дек хранится в памяти так же, как и очередь.