учитывая односвязный список, как определить головной узел из указанного узла в C? - PullRequest
0 голосов
/ 26 августа 2011

с учетом односвязного списка, как определить головной узел из указанного узла (например, для узла 4). Итого # узлов: 10.Спасибо. Логика подойдет, код ценится.

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

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

Ответы [ 3 ]

3 голосов
/ 26 августа 2011

Это невозможно сделать с помощью описанного вами односвязного списка.

0 голосов
/ 15 июня 2017

Вы просто не можете войти в односвязный список.

Из Википедии:

Односвязные списки содержат узлы, которые имеют поле данных, а также поле «следующий»,указывает на следующий узел в строке узлов.

Вы не можете вернуться к предыдущему узлу, поскольку у вас нет никакой информации о нем.Если вам был задан какой-либо случайный узел из односвязного списка, head вашего нового списка будет тем узлом, поскольку вы не сможете вернуться дальше.

0 голосов
/ 26 августа 2011

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

Для каждого кандидата просмотрите список, который начинается сЭто.В конце концов вы попадете в соответствующий хвост, или вы попадете в соответствующий узел.

Вы также можете выполнить эту работу, даже если ваши кандидаты не все главы уникальных списков.Но вам понадобится логика для обнаружения перекрытия.

...