@GreySS

Динамическая структура данных. Что это?

В требованиях к одной вакансии(junior) Динамическая структура данных.
Цитата из Прата С. 189 стр.: "Инструментом для этого, опять-таки, послужит операция new. С ее помощью можно создавать динамические структуры. Динамические здесь снова означает выделение памяти во время выполнения, а не во время
компиляции. Кстати, поскольку классы очень похожи на структуры, вы сможете использовать изученные приемы как для структур, так и для классов.". С этим ясно. Так же яндексом выводится очень много задач/примеров, где дсд применяется к Стеку. В итоге получаем структуры и стек. Что еще можно отнести к дсд?
  • Вопрос задан
  • 386 просмотров
Пригласить эксперта
Ответы на вопрос 3
Nipheris
@Nipheris Куратор тега C++
динамические структуры. Динамические здесь снова означает выделение памяти во время выполнения, а не во время компиляции.

Что еще можно отнести к дсд?

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

Так же яндексом выводится очень много задач/примеров, где дсд применяется к Стеку. В итоге получаем структуры и стек.

Вы делаете выводы как человек, обладающей логикой, но совершенно не обладающий знанием предмета. Вы поставили в один ряд совершенно несопоставимые вещи. Может сначала стоит изучить материал поглубже?
Ответ написан
@Mercury13
Программист на «си с крестами» и не только
Инструментом для этого, опять-таки, послужит операция new.

Это и есть критерий ДСД. Всё, где используется динамическая память,— динамическая структура данных.

Так же яндексом выводится очень много задач/примеров, где дсд применяется к Стеку. В итоге получаем структуры и стек.

Почему только?
По организации: одиночный объект, массив, разные виды деревьев, связанный список и комбинации всего этого…
По семантике: одиночный объект, индексный массив, ассоциативный массив, список, стек, очередь, pimpl (указатель на реализацию), динамическая строка…
Например, ассоциативный массив (семантика) можно реализовать как дерево поиска (двоичное дерево), а можно как хэш-таблицу (расширяемый динамический массив + куча связанных списков).
Очередь (семантика) может быть кольцевым списком (динамический массив, возможно, расширяемый), может — расширяемым массивом из динамических массивов (так работает std::deque из C++), может — связанным списком.
Стандартный подход к строке — динамический массив. Но что делать, если мы, например, клеим и клеим к строке что-то в конец? Или пишем текстовый редактор, где можно вписывать текст в середину? Тоже хитрые структуры.
Задача Яндекса — проверить испытуемого за несколько минут. Сложную задачу вряд ли за это время разгрызёшь. Потому и любят простые структуры данных.
Ответ написан
Комментировать
@abcd0x00
Динамическая структура данных - это структура данных, количество элементов которой может меняться в процессе. Никакого отношения к динамической памяти и new это понятие не имеет.

Стек, очередь, дек, последовательность, множество, нагруженное множество, Л1-список, Л2-список, динамический вектор, дерево, хеш-таблица и другие - это всё динамические структуры данных.

А вот просто вектор, матрица - это нединамические структуры данных, потому что количество элементов в них фиксировано.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы