单链表找到倒数第N个节点
思路:用快慢指针,两个指针都先指向头节点,然后快指针先移动N个位置,接着两个指针同时移动,终止条件为快指针移动到最后一个节点的next时,即快指针移动到NULL时,循环终止,此时慢指针即是指向了倒数第N个节点
点击查看代码
#include <iostream>
using namespace std;
//博客园有时候不常看消息,有相关代码疑问的可以联系我,请注明来意,wx:A470216705
struct Node
{
struct Node *next;
int value;
};
Node* query(Node *head, int k)
{
Node *pre = head;
Node *behind = head;
while(pre!=NULL && k--!=0){
pre = pre->next;
}
while (pre != NULL)
{
pre = pre->next;
behind = behind->next;
}
return behind;
}
int main()
{
Node p1;
p1.value = 1;
p1.next = NULL;
Node p2;
p2.value = 2;
p2.next = &p1;
Node p3;
p3.value = 3;
p3.next = &p2;
Node head;
head.value = 4;
head.next = &p3;
Node *node = query(&head, 3);
cout<<node->value;
return 0;
}