加载中...

单链表找到倒数第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;
}

 
posted @ 2022-05-08 21:44  微微微  阅读(27)  评论(0编辑  收藏  举报