给定一个单链表,如何从一个指定的节点(例如节点4)中确定头节点。逻辑可以,代码是值得赞赏的。
我们知道给定一个头节点,可以很容易地执行前向遍历并确定下一个节点。
对于这种情况,使用双重链表会更简单,但我想知道是否有可能使用单链表跟踪头节点。
对于您所描述的那种单链表,根本不可能做到这一点。
你的问题不是很清楚。但唯一可行的方法是,每个候选对象都是唯一列表的头,其中一个是您要寻找的头。
对于每个候选项,遍历从它开始的列表。你最终会击中相应的尾部,或者你会击中有问题的节点。
您也可以使此工作,即使您的候选集不全是唯一列表的头。但是你需要逻辑来检测重叠
在单链表中就不能。
来自维基百科:
单链表包含有数据字段和'next'字段,它指向节点行中的下一个节点。
你不能回到前一个节点,因为你没有关于它的任何信息。如果给你一个单链表的任意随机节点,你的新列表的head
将是那个节点,因为你不能再往回走了。