剑指offer 15:链表的倒数第k个节点

题目描述

输入一个链表,输出该链表中倒数第k个结点。

解题思路

使用快慢指针法,让快指针先走k步,然后再让慢指针开始走,当快指针到达链表尾部时,慢指针刚好到达倒数第k个节点。

C++代码实现:

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
    
if(pListHead==NULL){ return NULL; } ListNode *p1,*p2; p1=pListHead; int count=0; int pos=k; while(pos>0 && p1!=NULL){ p1=p1->next; pos--; count++; } //如果链表长度不到K,输入不合法,返回NULL if(count!=k){ return NULL; } p2=pListHead; while(p1!=NULL){ p1=p1->next; p2=p2->next; } return p2; } };

猜你喜欢

转载自www.cnblogs.com/fancy-li/p/11614388.html