кроссворды, задачки, головоломки

Сборник задач разного уровня сложности по математике, информатике, физике, химии, программированию, экономике etc. Логические задачи, SQL задачи, решение задач. Задачи с ответами, а также нерешённые задачи.

Petruchek.Info

Закольцованный список

Добавлено: 02.03.13 в 18:20
Метки: информатика

Есть некая структура, имеющая указатель на следующий элемент.
Памяти хватает для того что бы хранить всего два элемента этой структуры.
Задача: определить является ли список закольцованным.

У этой задачи пока что нет ответа/решения. Вы можете прислать свой вариант в комментарии.


Комментарии
Google says:
Аноним (01.06.13):
Если есть указатель — значит есть и структура (в случае некорректных входных данных, выходные будут соответствующие). Хранить дополнительные элементы структур и не надо (используем указатели)

1. храним указатель на первую структуру
2. смотрим указатель на следующую:
2.1 если он совпадает с первым, то список закольцован;
2.2 если он нулевой, значит список не закольцован;
2.3 иначе переходим по этому указателю и идем на п.2.

Память используется только для хранения двух указателей.
Алексей (25.08.13):
Да, таким методом задача не решается.
А что если кольцо не на первый элемент, а где-то в центр?
Тут нужно два цикла с разными скоростями.
ASSASSIN28 (05.09.13):
Очень много нюансов и неясностей в самом описании задачи. Но если учесть, что вся структура будет забита в массив (который не будет считаться элементом памяти), то можно каждый очередной указатель записывать в 1-ю переменную, а потом сравнивать со 2-ой, которая в свою очередь следует по ним. Т.О. можно найти повторяющиеся, сели таковые будут иметь место.

P.S. Это только один из вариантов. Код требует доработки, но, надеюсь выражает основную мысль написанного.

Dim a, b
Dim z(8)

z(0) = 1
z(1) = 2
z(2) = 3
z(3) = 4
z(4) = 5
z(5) = 6
z(6) = 7
z(7) = 8
z(8) = 0

For Each b In z
a = a + 1
Next

b = a - 1
a = z(b) & ";"

Do While b <> 0
b = b - 1
If InStr(1, a, z(b)) <> 0 Then
MsgBox ("True")
Exit Sub
End If
a = a & z(b) & ";"
Loop

MsgBox ("False")
АА (24.12.13):
result = (A1->next->next == A1) && (A2->next->next == A2),
где
A1, A2 - две структуры,
next - указатель на следующий элемент
?
Тёма (23.03.15):
В бесконечном цикле последовательно сдвигать один указатель на N элементов, второй - на M, где N и M взаимно просты (2 и 3, например). Если указатели совпадут, то в структуре есть цикл.
Комментарий от новенького:
Новенький является
Новенький не робот
Знаки на картинке: латинские буквы, арабские цифры


Есть на сайте: Онлайн кроссворды Задачи Онлайн игры Блог
Все работы, опубликованные на сайте — авторские, если не указано иное. Перепечатка возможна только с письменного разрешения владельцев ресурса, с обязательной ссылкой на сайт petruchek.info. Пишите нам: . Сайт должен работать в IE, FF, Opera, Safari.

Реклама:

Разработано в студии "Webous"о проектесайта карта

Реклама: