给定一个单链表,如何在C语言中从指定的节点中确定头节点



给定一个单链表,如何从一个指定的节点(例如节点4)中确定头节点。逻辑可以,代码是值得赞赏的。

我们知道给定一个头节点,可以很容易地执行前向遍历并确定下一个节点。

对于这种情况,使用双重链表会更简单,但我想知道是否有可能使用单链表跟踪头节点。

对于您所描述的那种单链表,根本不可能做到这一点。

你的问题不是很清楚。但唯一可行的方法是,每个候选对象都是唯一列表的头,其中一个是您要寻找的头。

对于每个候选项,遍历从它开始的列表。你最终会击中相应的尾部,或者你会击中有问题的节点。

您也可以使此工作,即使您的候选集不全是唯一列表的头。但是你需要逻辑来检测重叠

在单链表中就不能。

来自维基百科:

单链表包含有数据字段和'next'字段,它指向节点行中的下一个节点。

你不能回到前一个节点,因为你没有关于它的任何信息。如果给你一个单链表的任意随机节点,你的新列表的head将是那个节点,因为你不能再往回走了。

最新更新