Что такое структурированные данные? Какие структуры данных к ним относятся?

Структурированные данные — это данные, организованные по определенным правилам. Такая организация позволяет удобно хранить, искать, изменять и обрабатывать информацию.

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

Зачем нужны структуры данных

Структуры данных помогают выбрать подходящий способ хранения информации под конкретную задачу.

Например:

Линейные структуры

В линейных структурах элементы расположены последовательно.

Массив

Хранит элементы в индексированной последовательности. Обеспечивает быстрый доступ по номеру элемента.

Список

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

Стек

Стек работает по принципу LIFO: последним пришел — первым вышел.

Применяется в вызовах функций, рекурсии, отмене действий.

Очередь

Очередь работает по принципу FIFO: первым пришел — первым вышел.

Применяется в очередях задач, печати, обработке запросов.

Дек

Двусторонняя очередь позволяет добавлять и удалять элементы с обоих концов.

Нелинейные структуры

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

Дерево

Дерево хранит иерархические отношения.

Примеры:

Граф

Граф состоит из вершин и ребер. Он описывает связи произвольного вида.

Примеры:

Ассоциативные структуры

Таблица или словарь

Хранит пары ключ — значение.

Например: логин пользователя как ключ и профиль как значение.

Хеш-таблица

Использует хеш-функцию для быстрого доступа по ключу. В среднем поиск, вставка и удаление выполняются близко к O(1).

Записи и объекты

Структурированные данные могут объединять поля разных типов.

Например, запись Пользователь может содержать имя, email, возраст и роль.

type User = {
  name;
  email;
  age;
};
type User = {
  name: string;
  email: string;
  age: number;
};
package main
func main() {
  type User = {
    name
    email
    age
  }
}
public class Example {
  public static void main(String[] args) {
    type User = {
      name;
      email;
      age;
    };
  }
}
user = {
  "name": "Иван",
  "email": "ivan@example.com",
  "age": 18,
}

Выбор структуры

Выбор зависит от операций:

Вывод

структурированные данные — это организованные наборы элементов. К ним относятся массивы, списки, стеки, очереди, деки, деревья, графы, записи, объекты, таблицы, словари и хеш-таблицы.

Источники

  • Семакин И.Г. Основы программирования и баз данных. Учебник. - М.: Академия, 2014. - 224 с.
  • Симонова Е.В. Структуры данных в C#. Линейные и нелинейные динамические структуры. - Лань, 2018. - 152 с.
  • Бертран Мейер. Почувствуй класс. Учимся программировать хорошо с объектами и контрактами. - М.: Национальный Открытый Университет "ИНТУИТ": БИНОМ. Лаборатория знаний, 2011. - 775 с.
  • Мэтт Вайсфельд. Объектно-ориентированное мышление. - СПб.: Питер, 2014. - 304 с.
  • Ривест Р., Штайн К., Лейзерсон Ч., Кормен Т. Алгоритмы: построение и анализ. - М.: Вильямс, 2007. - 1296 с.
  • Стивенс Род. Алгоритмы. Теория и практическое применение. - М.: Эксмо, 2017. - 544 с.
  • Рублев В.С. Основы теории алгоритмов. - 2-е издание, исправленное. - М.: Научный мир, 2008. - 128 с.
  • Гольдберг Г.Л. Основы алгоритмизации и программирования. - М.: Академия, 2012. - 384 с.
  • Лаврищева И.В. Технология программирования. - М.: Горячая линия - Телеком, 2011. - 400 с.
  • Сергеев И.С., Сухоруков А.И., Шестаков А.А. Программирование: учебник для вузов. - М.: БИНОМ. Лаборатория знаний, 2013. - 512 с.