Вопросы об очередях, часто задаваемые на собеседованиях



· Реализуйте стек при помощи очереди

· Обратите первые k элементов в очереди

· Сгенерируйте двоичные числа от 1 до n при помощи очереди

Связный список


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

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

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


Вот так можно наглядно изобразить внутреннюю структуру связного списка:

 

Существуют такие типы связных списков:

· Односвязный список (однонаправленный)

· Двусвязный список (двунаправленный)

Простейшие операции со связными списками:

· InsertAtEnd — Вставляет заданный элемент в конце связного списка

· InsertAtHead — Вставляет заданный элемент в начале (с головы) связного списка

· Delete — Удаляет заданный элемент из связного списка

· DeleteAtHead — Удаляет первый элемент в связном списке

· Search — Возвращает заданный элемент из связного списка

· isEmpty — Возвращает true, если связный список пуст

 

Вопросы о связных списках, часто задаваемые на собеседованиях:

· Обратите связный список

· Найдите петлю в связном списке

· Возвратите N-ный узел с начала связного списка

· Удалите из связного списка дублирующиеся значения

Графы


Граф — это множество узлов, соединенных друг с другом в виде сети. Узлы также называются вершинами. Пара (x,y) называется ребром, это означает, что вершина x соединена с вершиной y. Ребро может иметь вес/стоимость — показатель, характеризующий, насколько затратен переход от вершины x к вершине y.

 

Типы графов:

· Неориентированный граф

· Ориентированный граф


В языке программирования графы могут быть двух видов:

· Матрица смежности

· Список смежности

Распространенные алгоритмы обхода графа:

· Поиск в ширину

· Поиск в глубину

Вопросы о графах, часто задаваемые на собеседованиях:

· Реализуйте поиск в ширину и поиск в глубину

· Проверьте, является граф деревом или нет

· Подсчитайте количество ребер в графе

· Найдите кратчайший путь между двумя вершинами

Деревья


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

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

Вот схема простого дерева и базовая терминология, связанная с этой структурой данных:

Существуют деревья следующих типов:

· N-арное дерево

· Сбалансированное дерево

· Двоичное дерево

· Двоичное дерево поиска

· АВЛ-дерево

· Красно-черное дерево

· 2—3 дерево


Из вышеперечисленных деревьев чаще всего используются двоичное дерево и двоичное дерево поиска.

 

Вопросы о деревьях, часто задаваемые на собеседованиях:


Найдите высоту двоичного дерева
Найдите k-ное максимальное значение в двоичном дереве поиска
Найдите узлы, расположенные на расстоянии “k” от корня
Найдите предков заданного узла в двоичном дереве

 

Бор


Бор, также именуемый «префиксное дерево» — это древовидная структура данных, которая особенно эффективна при решении задач на строки. Она обеспечивает быстрое извлечение данных и чаще всего применяется для поиска слов в словаре, автозавершений в поисковике и даже для IP-маршрутизации.

Вот как три слова «top» (верх), «thus» (следовательно), and «their» (их) хранятся в бору:

Слова располагаются в направлении сверху вниз, и зеленые узлы «p», «s» и «r» завершают, соответственно, слова «top», «thus» и «their».

Вопросы о борах, часто задаваемые на собеседованиях:

· Подсчитайте общее количество слов, сохраненных в бору

· Выведите на экран все слова, сохраненные в бору

· Отсортируйте элементы массива при помощи бора

· Постройте слова из словаря, воспользовавшись бором

· Создайте словарь T9

 

Хеш-таблица


Хеширование — это процесс, применяемый для уникальной идентификации объектов и сохранения каждого объекта по заранее вычисленному индексу, именуемому его «ключом». Таким образом, объект хранится в виде «ключ-значение», а коллекция таких объектов называется «словарь». Каждый объект можно искать по его ключу. Существуют разные структуры данных, построенные по принципу хеширования, но чаще всего из таких структур применяется хеш-таблица.
Как правило, хеш-таблицы реализуются при помощи массивов.


Производительность хеширующей структуры данных зависит от следующих трех факторов:

· Хеш-функция

· Размер хеш-таблицы

· Метод обработки коллизий

 

Ниже показано, как хеш отображается на массив. Индекс этого массива вычисляется при помощи хеш-функции.

Вопросы о хешировании, часто задаваемые на собеседованиях:

· Найдите симметричные пары в массиве

· Отследите полную траекторию пути

· Найдите, является ли массив подмножеством другого массива

· Проверьте, являются ли массивы непересекающимися


Выше описаны восемь важнейших структур данных, которые определенно нужно знать, прежде чем идти на собеседование по программированию.


Дата добавления: 2020-01-07; просмотров: 214; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!