方法一:
从头遍历第一次,求出单链表长度L;
再遍历一次,第L-3+1个节点就是从尾部倒数第3个节点。
但这种方法需要遍历两遍。
方法二:
设要从尾部找第k个节点
定义两个指针p1和p2,它们之间间隔k-1个节点。p1和p2均从头节点开始,p1先走,等间隔k-1个节点后,p2再出发。
然后两个指针都继续移动,当p1移动到尾节点时,p2所在位置就是从尾部倒数第k个节点的位置。
这种做法,只需要遍历一次即可。
从头遍历第一次,求出单链表长度L;
再遍历一次,第L-3+1个节点就是从尾部倒数第3个节点。
但这种方法需要遍历两遍。
设要从尾部找第k个节点
定义两个指针p1和p2,它们之间间隔k-1个节点。p1和p2均从头节点开始,p1先走,等间隔k-1个节点后,p2再出发。
然后两个指针都继续移动,当p1移动到尾节点时,p2所在位置就是从尾部倒数第k个节点的位置。
这种做法,只需要遍历一次即可。