Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];

Вниз

Связные списки   Найти похожие ветки 

 
Redwwq   (2007-03-18 15:36) [0]

Чем отличается односвязный список от двусвязного?


 
Eraser ©   (2007-03-18 15:38) [1]


> Redwwq   (18.03.07 15:36) 

тем что в первом одна связь, а во втором - две :)


 
xayam ©   (2007-03-18 15:44) [2]


> Eraser ©   (18.03.07 15:38) [1]
> > Redwwq   (18.03.07 15:36)
> тем что в первом одна связь, а во втором - две :)

железная логика ))


 
vuk ©   (2007-03-18 15:54) [3]

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


 
Anatoly Podgoretsky ©   (2007-03-18 15:59) [4]

> vuk  (18.03.2007 15:54:03)  [3]

> Вставка/удаление на двусвязных списках работает быстрее.

Я бы не сказал, в двухсвязном списке надо поправить две ссылки, вместо одной.


 
vuk ©   (2007-03-18 16:01) [5]

to Anatoly Podgoretsky ©   (18.03.07 15:59) [4]:
>Я бы не сказал, в двухсвязном списке надо поправить две ссылки, вместо
>одной.
При этом предыдущий элемент (ссылку в котором тоже надо поправить) находится только перебором от начала списка. В отличие от.


 
Anatoly Podgoretsky ©   (2007-03-18 16:07) [6]

> vuk  (18.03.2007 16:01:05)  [5]

Эта ссылка будет получена при поиске текущего элемента.


 
vuk ©   (2007-03-18 16:17) [7]

to Anatoly Podgoretsky ©   (18.03.07 16:07) [6]:
>Эта ссылка будет получена при поиске текущего элемента.
Зависит от того, в какую ситуацию попадем. Может и не быть этой ссылки в каком-то конкретном случае. Если рассматривать ситуацию, когда есть элемент списка который нам нужно вставить и место, куда его нужно вставить заданное другим элементом списка, то для односвязных списков операции "вставить элемент после" и "вставить элемент до" сильно отличаются, т.к. в одном из случаев необходим перебор для поиска. С удалением ровно та же история.


 
Anatoly Podgoretsky ©   (2007-03-18 16:28) [8]

> vuk  (18.03.2007 16:17:07)  [7]

Если сохраненая ссылка, то конечно так


 
isasa ©   (2007-03-18 16:50) [9]

Односвязный прелестен тем, что нужно как зеницу ока хранить Root, иначе при его потере будет весело. :)


 
antonn ©   (2007-03-18 16:51) [10]

isasa ©   (18.03.07 16:50) [9]
тоже самое касается под-рут, только не так интересно:)


 
default ©   (2007-03-18 16:58) [11]

isasa ©   (18.03.07 16:50) [9]
а разве плохо когда весело?:)


 
isasa ©   (2007-03-18 17:04) [12]

default ©   (18.03.07 16:58) [11]
а разве плохо когда весело?:)


А кто-ж спорит? :)


 
clickmaker ©   (2007-03-18 17:09) [13]


> нужно как зеницу ока хранить Root

root всегда надо хранить. Чтобы в него зрить (зреть?) периодически


 
isasa ©   (2007-03-18 17:12) [14]

clickmaker ©   (18.03.07 17:09) [13]

Это был намек? Или как ... ?  :)


 
Ант   (2007-03-18 20:04) [15]

Ребяты, а кто-нить в ральных программах использует эти фишки?
Я вот как то по жизни всегда обхожусь TList"ом, и не представвляю ситуации, когда на практике понадобится односвязный (двухсвязный) список.
Ну разве что курсовую по программированию в ВУЗе сдать.
Но я говорю о реальной жизни.

Поправьте если не прав


 
Eraser ©   (2007-03-18 20:08) [16]


> Ант   (18.03.07 20:04) [15]

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


 
default ©   (2007-03-18 20:55) [17]

Eraser ©   (18.03.07 20:08) [16]
во второй фремворк внесли класс двусвязного списка
видно кому-то он таки нужен:)


 
Ант   (2007-03-18 21:01) [18]


> Eraser ©  
</I
> default ©  

>

Давайте конкретику, хорошо?  :-)


 
vuk ©   (2007-03-18 21:05) [19]

to Ант   (18.03.07 20:04) [15]:
>не представвляю ситуации, когда на практике понадобится односвязный
>(двухсвязный) список.
У массивов (а TList это внутри всё-таки массив) эффективность операций добавления/удаления сильно ниже, чем у списков и ещё зависит от количества злементов. Вот и получается - для случаев с активной вставкой-удалением элементов списки использовать лучше, чем TList и иже с ними.

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


 
cyborg ©   (2007-03-18 21:08) [20]

> [15] Ант   (18.03.07 20:04)

Я, вот, не представляю как без них можно делать.


 
isasa ©   (2007-03-18 21:15) [21]

Ну это "третий" компонент, но TdxDBTreeView из Dev. Express, чем не список.


 
vuk ©   (2007-03-18 21:16) [22]

to isasa ©   (18.03.07 21:15) [21]:
>но TdxDBTreeView из Dev. Express, чем не список.
Ничем. Потому, что он дерево. :)


 
isasa ©   (2007-03-18 21:20) [23]

Принцип тот же ... Остальное нюансы. :)


 
vuk ©   (2007-03-18 21:35) [24]

to isasa ©   (18.03.07 21:20) [23]:
>Принцип тот же ... Остальное нюансы. :)
Ну... Не зная того, как устроен внутри элемент дерева в TTreeView я не брался бы утверждать, что там именно списочные структуры внутри используются. А как оно там у MS реализовано - фиг их знает.

А вот если взять TdxTreeList тех же DevExpress (и соответственно QuantumGrid до 4-й версии), то там подэлементы в узле дерева в TList хранятся.


 
Ант   (2007-03-18 22:27) [25]

Мне кажется, времена печения о быстродействии программы при работе с оперативкой до такой степени, остались в прощлом

ну пробегитесь миллион раз по списку первым и вторым способом - и разница составит сотые доли секунды

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


 
DVM ©   (2007-03-18 22:33) [26]


> Мне кажется, времена печения о быстродействии программы
> при работе с оперативкой до такой степени, остались в прощлом

времена всегда одинаковые, задачи стали объемнее, и где раньше был миллион, теперь миллиард.


 
vuk ©   (2007-03-18 22:43) [27]

Блин. А потом сидим и удивляеся, почему все тормозное такое... :(


 
Ант   (2007-03-18 23:06) [28]

Ну вот честное пионерское, ни разу ни одна реальная программа не тормозила потому, что работала с массивом вместо связного списка.
А вот за счет бардачной организации доступа к БД - постоянно


 
@!!ex ©   (2007-03-18 23:19) [29]

> [28] Ант   (18.03.07 23:06)

Вы показываете мнение человека, никогда не писавшего приложения с критичной скорости работы(судя по тому, что не считаете сотые доли большим числом... Иногда приходится воевать из-за тысячных) и вообще никогда не учавствовали в больших серьезных проектах не ограничивающихся выборкой из БД(судя по тому, что не знаете куда применить классические вещи, теже списки)...
В этом проблема дельфи(это не лично к вам, это ), натыкали компонетов, работает - и замечательно.
Реально есть куда прикрутить даже конечный автоматы. ;)
P.S>
Тут не далеко обсуждали эффективность использования двусвязных(помоему) список для хранения текстурных объектов.
Кстати, TList по моему тоже список двусвязный.


 
vuk ©   (2007-03-18 23:25) [30]

to @!!ex ©   (18.03.07 23:19) [29]:
>Кстати, TList по моему тоже список двусвязный.
Массив он. В чистом виде. Исходники смотрите.


 
Ант   (2007-03-18 23:27) [31]


> @!!ex ©  


Пафоса много, а конкретики опять ноль.
Я вас слушаю.


 
Ант   (2007-03-18 23:31) [32]


> что не считаете сотые доли большим числом.


Я имел в виду - на всю операцию, на весь массив (список)


 
@!!ex ©   (2007-03-18 23:32) [33]

> Массив он. В чистом виде. Исходники смотрите.

Ну скажем не в чисто.. Всетаки массив указателей, а не чистый массив...
Но вообще вы правы, перепутал с Сишными.


> [31] Ант   (18.03.07 23:27)

Вам нужна конкретика по использованию Списоков? Я уже сказал. Храниение текстур.
Да вообще любых динамических данных. Системы частиц,  динамические объекты создаваемые в процессе обработки сцены.
В свое время был придуман другой способ работы с дампом данных, но требующий больше памяти. Но насколько мне известно, не очень распространенный метод... Я его приводил, опять же в конференции "Игры".
Списки остаются самым распространенным способом хранения динамических данных, где элементы часто удаляются из любой части списка.


 
vuk ©   (2007-03-18 23:37) [34]

to @!!ex ©   (18.03.07 23:32) [33]:
>Ну скажем не в чисто.. Всетаки массив указателей, а не чистый массив...
А как это называть? Если контейнер для указателей хранит их в массиве указателей, это не массив в чистом виде? :)


 
@!!ex ©   (2007-03-18 23:39) [35]

>
>
> [34] vuk ©   (18.03.07 23:37)

Это массив указателей в чистом виде. ;)


 
Ант   (2007-03-18 23:45) [36]


> @!!ex ©

Хорошо, ответ на вопрос
"а где их реально необходимо пременять"
получил ответ
"в играх"
спасибо


 
Ант   (2007-03-18 23:46) [37]

блин...
применять конечно же


 
@!!ex ©   (2007-03-18 23:48) [38]

> [36] Ант   (18.03.07 23:45)

Игры - единственное место, где используются динамических структуры?
Я говорю об играх. потому как именно там я их и использую, но это же не единственное место. :)


 
Zeqfreed ©   (2007-03-18 23:54) [39]

Реальный пример использования связанных списков — список закладок в браузере. Когда их можно свободно перемещать, удалять и выполнять другие операции. Можно, конечно, хранить позицию каждой закладки в массиве и искать при каждом переключении закладки следующую, затрачивая кучу памяти и времени, а можно просто поменять пару указателей местами.


 
Anatoly Podgoretsky ©   (2007-03-18 23:56) [40]

> Zeqfreed  (18.03.2007 23:54:39)  [39]

Неудачный пример.
Эта задача также мгновенно решается и с помощью массива.



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.034 c
15-1174632825
Loginov Dmitry
2007-03-23 09:53
2007.04.15
Порядок выполнения вложенных функций


15-1174209791
Redwwq
2007-03-18 12:23
2007.04.15
Компьютер зависает


3-1169551985
vl
2007-01-23 14:33
2007.04.15
Добавление данных в таблицу


3-1169469204
Patrick
2007-01-22 15:33
2007.04.15
Множество комманд в одном запросе


6-1161783101
Rey_Mysterio
2006-10-25 17:31
2007.04.15
HTML код страницы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский