•  
  • 0
  •  
0

Фундаментальные структуры данных

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

Разъясните, что представляет из себя каждая из структур, без привязки к конкретному языку. И чем они отличаются друг от друга.

  • Список
  • Массив
  • Вектор
  • Хэш-таблица

Может какие забыл?

данные, структуры данных.
спросил 46 дней назад Аватор пользователя trasher trasher
30
300

3 ответа:

    •  
    • 2
    •  

    Позволю себе уточнить коллегу.

    Список - собственно связь элементов любого типа, в том числе и списков. Списки бывают односвязные, двусвязные и многосвязные (когда помимо предыдущего и следующего добавляются, к примеру, наследник и родитель). Иными словами - нет связи - нет списка, см. Массив. Доступ к спискам последовательный, в отличие от массива. Соответственно быстродействие по доступу O(n), в то время как у массива O(1).

    Хеш-табличку легче всего себе представить как массив значений "ключ = значение", где ключ (внимание) является а) уникальным для всего пространства ключей данной таблицы, б) является хешируемым в математическом смысле, т.е. в реальности каждому ключу (если он уже сам по себе не хэш) приводится в соответствие некоторое число, причём операция ключ -> число всегда даёт один и тот же результат, обратное строго говря неверно. Порядок элементов в хеш-табличке зависит от внутренней реализации и не может быть предсказан (не зная алгоритма реализации, понятное дело).

    Вектор в С++ понимании не просто массив, а массив с автоматическим аллокатором.

    ответил 45 дней назад Аватор пользователя andy_shev andy_shev
    266 5
    •  
    • 0
    •  

    массив - упорядоченное множество однотипных элементов, с доступом к элементу по его индексу (номеру);

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

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

    вектор - смотря что имеется ввиду. Вектор, который std::vector в C++ - фактически обычный массив. А если имеется ввиду вектор в математическом смысле - то это 2х, 3х или 4х-мерный массив, для которого определены соответствующие математические операции.

    Как-то так вкратце. Вики в помощь.

    ответил 46 дней назад Аватор пользователя corristo corristo
    95 4
    изменил 46 дней назад Аватор пользователя corristo corristo
    95 4
    •  
    • 0
    •  

    Рекомендую почитать Никлауса Вирта "Алгоритмы и структуры данных". В этой книге описываются не только составные типы данных, но и операции, которые можно с ними совершать, плюсы и минусы, рекомендации к применению. Предупреждаю, что все примеры на Паскале, но они достаточно просты для понимания.

    ответил 22 дня назад Аватор пользователя HyperGeek HyperGeek
    50 4
Чтобы написать ответ, вы должны авторизироваться.