Здравствуйте, avpavlov, Вы писали:
A>А я считаю, что есть смысл проводить между ними черту, о чем тоже писал. Потому что если эту черту не провести, то возникает двусмысленность, из-за невозможности точно сказать, о чём в конкретный момент времени идёт речь — "о способе хранения" или "о способе хранения и манипулировании".
Помимо способа хранения, структура данных также определяет некоторые инварианты. В частности, "структура" элементов двусвязного списка и бинарного дерева совершенно одинакова, тем не менее это две разные структуры данных.
Потому, что в дереве выполняется требование достижимости + требование отсутствия циклов, а в списке — требования a.next.prev == a == a.prev.next.
При таком определении становится понятно, что структура данных автоматически запрещает некоторые "алгоритмы" (в частности, те, которые нарушают инварианты) и делает возможными другие (например, бинарный поиск).
Соответственно, некоторые структуры данных позволяют обойтись без блокировок при конкурентном выполнении некоторых алгоритмов. А некоторые — нет. В частности, при реализации стека в виде односвязного списка нетрудно сделать неблокирующими все алгоритмы, построив их на иммутабельности.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.