![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Пользователь
Регистрация: 23.01.2013
Сообщений: 10
|
![]()
можно. но хвоста то нет есть кольцо
![]() |
![]() |
![]() |
![]() |
#12 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
какая занимательная задачка-головоломка! супер!
leonid_v, а скажите, можно ли предположить, что в списке не более чем X элементов (ну. например, в списке не более 1000 элементов (или 10000 или миллион - не суть важно)). Исходя из этого условия можно найти элемент, на который идёт зацикливание и далее уже задача решается элементарно! кстати, а почему имя файла на иврите? ![]() Последний раз редактировалось Serge_Bliznykov; 23.01.2013 в 14:52. |
![]() |
![]() |
![]() |
#13 |
Пользователь
Регистрация: 23.01.2013
Сообщений: 10
|
![]()
нет.в задаче не сказано
|
![]() |
![]() |
![]() |
#14 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
тогда как вам такое решение.
предположим, что в списке K элементов (K-й элемент == концевому). тогда конецевой элемент должен ссылаться на один иэ элементов, расположенный на протяжении от головы и до элемента K так же предположим, что, сначала, K=1 проверим это предположение, если это не так, увеличим K на единицу и опять проверим. будем повторять до тех пор, пока условие не выполнится. профит. на псевдокоде это будет примерно так Код:
|
![]() |
![]() |
![]() |
#15 |
Пользователь
Регистрация: 23.01.2013
Сообщений: 10
|
![]()
в условии сказано что время работы O(n) а это подразумевает нет цикла в цикле
|
![]() |
![]() |
![]() |
#16 |
Форумчанин
Регистрация: 24.04.2012
Сообщений: 300
|
![]()
сохрани адрес первого элемента и беги пока он снова не встретится. Профит!
int fa = &l->first(); int count = 0; do { count++; }while(&l->next() != fa) ну как нить так. Если кольцо замыкается на первом элементе канешн. Реализацию списка надо для начала увидеть, чтобы судить что к чему.
Помог? Оставляем отзыв =)
Последний раз редактировалось Helloween; 23.01.2013 в 15:24. |
![]() |
![]() |
![]() |
#17 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
Helloween, а вы иллюстрацию не смотрели?
позволю её продублировать: ссылка идёт НЕ на первый элемент списка! Цитата:
![]() я в расстерянности... ![]() . |
|
![]() |
![]() |
![]() |
#18 |
Пользователь
Регистрация: 23.01.2013
Сообщений: 10
|
![]()
я в расстерянности...
![]() ![]() ![]() |
![]() |
![]() |
![]() |
#19 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
скажу сейчас одну крамольную вещь...
только просьба помидорами не кидаться! ![]() у каждого элемента в списке есть адрес (указатель). Если предположить, что элементы выделялись последовательно, то у лежащих правее элементов адрес (указатель) имеет большее значение, чем у тех элементов списка, что лежат левее. улавливаете, к чему это я? ![]() если указатель на следующий элемент больше, чем адрес самого элемента, значит этот элемент НЕ КОНЦЕВОЙ. p.s. на самом деле, я бы категорически не рекомендовал использовать подобные "трюки" в реальной задаче - ибо это всё хакерсто, глюкодром и вообще КРАЙНЕ не надёжно!!! просто я не вижу других вариантов решения задачи ![]() |
![]() |
![]() |
![]() |
#20 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
При добавлении в список можно проделать проход от добавленного элемента до конца списка или до элемента, равному добавленному. Так можно понять что на этом элементе петля. Код:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Связанный список | Лжец | Общие вопросы C/C++ | 2 | 12.12.2011 23:42 |
Связанный список на СИ | maryan.vetrov | Общие вопросы C/C++ | 6 | 18.10.2010 08:49 |
Связанный список (Linked list). | lnter | Помощь студентам | 0 | 12.04.2010 17:58 |
База данных. Связанный список. | 4uJIaBekTonop | C/C++ Базы данных | 3 | 29.12.2009 10:42 |