链表中倒数第K个节点

倒数第K个节点,重点是边界条件,以及输入情况。

具体思路:

{
    int n;
    while(cin >> n){
        //创建头节点
        ListNode *pHead = new ListNode(-1);
        
        ListNode *p = pHead;
        
        for(int i = 0; i < n ; i++)
        {
            int data;
            cin >> data;
            ListNode *q = new ListNode(data);
            p->next = q;
            p = p->next;//将其指针放入其中.
        }
        
        int Kth;
        cin >> Kth;
        p = pHead;//重新回到这边去.
        if (Kth == 0)  cout << 0 << endl;
        else if( n - Kth >= 0)
        {
            for(int i = 0; i <= n-Kth;++i)
        {
            p = p->next;
            
        }
        cout << p->val << endl;
        }
        else
            cout << "NULL" << endl;
    }
    return 0;
}

最重要的是边界条件,即K如果是0怎么办?
K大于了n怎么办? k-n>=0
除此之外的其他情况??

原文地址:https://www.cnblogs.com/goto2091/p/13723870.html