链表中倒数第k个节点

输出链表中倒数第k个结点

思路:尺子思想,定义两个指针,先让p2走到正数第k个位置,然后p1和p2一起往前走,当p2指向最后一个节点的时候,p1就指向了倒数第k个节点
注意!!!一定要考虑特殊情况,比如链表为空,k<=0的情况;比如k大于了链表的长度的情况(如果p2走到了最后)!!!
图片说明

/*
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||k<=0)
            return NULL;
        ListNode* p1=pListHead;
        ListNode* p2=pListHead;
        while(k>1)
        {
            if(p2->next==NULL)
                return NULL;
            else
            {
                p2=p2->next;
                k--;
            }
        }
        while(p2->next!=NULL)
        {
            p1=p1->next;
            p2=p2->next;
        }
        return p1;

    }
};
全部评论

相关推荐

黑皮白袜臭脚体育生:春节刚过就开卷吗?哈基馆,你这家伙......
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务