Предположит, у вас есть упорядоченный набор, который вы хотите изменить путем добавления и удаления элемента s. Кроме того, вам необходимо сохранить ссылку на элемент таким образом, чтобы позже вы могли получить предыдущий или следующий элемент. Например, список дел или набор абзацев в книге.
Прежде всего следует отметить, что если вы хотите сохранить ссылки на объекты вне самого набора, вы, скорее всего, в конечном итоге сохраните указатели в массиве, вместо того, чтобы сами хранить объекты. В противном случае вы не сможете вставлять в массив - если объекты встроены в массив, который они будут перемещать во время вставок, и любые указатели на них станут недействительными. То же самое верно для индексов массива.
Ваша первая проблема, как вы отметили сами, это связанный с вставкой список позволяет вставлять в O (1), но для массива обычно требуется O (n).Эту проблему можно частично преодолеть - можно создать структуру данных, которая дает подобный массиву алгоритм доступа, где чтение и запись в худшем случае логарифмичны.
Ваша вторая и более серьезная проблема заключается в том, что если элемент, находящий следующий элемент, равен O (n). Если набор не был изменен, вы могли бы сохранить индекс элемента как ссылку вместо указателя, тем самым сделав find-next операцию O (1), но поскольку это все, что у вас есть, это указатель на сам объект и никоим образом для определения его текущего индекса в массиве, кроме как путем сканирования всего «массива». Это непреодолимая проблема для массивов - даже если вы можете оптимизировать вставки, вы ничего не можете сделать, чтобы оптимизировать операцию поиска следующего типа.
Как различные элементы обрабатываются по-разному? Связанный список использует фиксированную структуру со следующим полем (требуется фиксированный размер) или сохраняет указатель на данные в автомобиле (переменный размер ОК). Оба подхода столь же легки с вектором. То же самое для перетасовки. – Brian 2008-10-03 15:17:27
Нет, связанный список может состоять из разных частей (если задан следующий и возможный размер). – 2008-10-03 15:56:56