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

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

1 – Массив:

Это для непрерывного хранения элементов одного и того же типа. Мы можем использовать массив в следующих случаях.

  • Если вы знаете размер массива до определения памяти
  • Если объем данных небольшой и предсказуемый, вы хотите получить доступ к элементам через индексы.
  • Работает быстро при переборе всех элементов в последовательности.
  • Массив занимает меньше памяти, чем связанный список.

2 - Связанный список:

В связанном списке есть ссылки между каждым узлом на следующий узел (односвязный список) и на их предыдущий узел (двухсвязный список). Мы можем использовать связанный список в следующих случаях.

  • Когда нам нужно постоянное время для вставки и удаления в нашей программе.
  • Где нам дается большой и непредсказуемый объем данных, т.е. когда данные динамично растут.
  • Нужно вставить или удалить элемент в любой позиции (т.е. в середине) списка.
  • Когда нам не нужен произвольный доступ к любым элементам списка.
Algorithm              Array     List                                 ---------              -----     ----
seek front              O(1)     O(1)
seek back               O(1)     O(1)
seek to index           O(1)     O(N)
insert at front         O(N)     O(1)
insert at back          O(1)     O(1)
insert after an item    O(N)     O(1)

3 - Стек:

Стек — это структура данных по принципу «последним пришел — первым обслужен» (LIFO). Итак, мы можем использовать стек в следующих случаях.

  • Оценка выражения и разбор синтаксиса.
  • Необходимость функции рекурсии.
  • Найдите правильный путь в лабиринте, используя поиск с возвратом.
  • Управление оперативной памятью.

4 - Очередь:

Очередь — это структура данных по принципу «первым поступил — первым обслужен» (FIFO). Мы можем использовать Queue в следующих случаях.

  • При необходимости вставки или удаления с обоих концов они могут использовать очередь или двустороннюю очередь.
  • Используйте очередь, когда нам нужен заказ.
  • Мы можем приоритизировать процесс, который будет следующим, используя очередь приоритетов, когда процесс с высоким приоритетом запускается перед задачами с низким приоритетом.
  • Выполняет задачи в порядке «первым пришел – первым обслужен».
Operation         Stack       Queue
---------         -----       -----                            Access             O(N)        O(N)
Insertion          O(1)        O(1)
Deletion           O(1)        O(1)
Search             O(N)        O(N)

5 - Хэш-таблица:

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

  • Все основные операции имеют постоянное время.
  • Хеширование используется для более эффективного поиска в базе данных.
  • Когда у нас есть большой объем данных и нам нужна быстрая операция поиска и вставки, мы можем использовать хэш-таблицу.

6 - График:

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

  • Найти кратчайший путь между городами.
  • Решить лабиринт игры.
  • Найти оптимизированный маршрут между городами.
  • Сети имеют множество применений в практической части теории графов.

7 - Двоичное дерево поиска:

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

  • когда данные нужно отсортировать.
  • Поиск может быть выполнен для диапазона значений.
  • Когда нам нужно упорядоченное распределение данных.
  • Балансировка по высоте помогает сократить время работы.
Operation          BST        Hash-table
---------         -----       ----------                        Access            O(logN)        O(N)
Insertion         O(logN)        O(N)
Deletion          O(logN)        O(N)
Search            O(logN)        O(N)

— Если вам понравилась статья, поделитесь ею с другом, чтобы поднимать вместе…😊😊