数据结构练习(08)链表中倒数第k个结点

http://zhedahht.blog.163.com/blog/static/2541117420072114478828/

这道题的代码有大量的指针操作。在软件开发中,错误的指针操作是大部分问题的根源。因此每个公司都希望程序员在操作指针时有良好的习惯,比如使用指针之前判断是不是空指针。这些都是编程的细节,但如果这些细节把握得不好,很有可能就会和心仪的公司失之交臂。

struct Node {
    int key;
    Node *next;
};

Node* findkth2tail(Node *head, unsigned int k)
{
    if (head == NULL)
        return NULL;

    Node *p1, *p2;
    p1 = head, p2 = NULL;

    for (int i = 0; i < k; ++i)
    {
        if (p1->next != NULL)
            p1 = p1->next;
        else
            return NULL;
    }

    p2 = head;

    while (p1->next != NULL)
    {
        p1 = p1->next;
        p2 = p2->next;
    }

    return p2;
}
-------------------------------------------------------

kedebug

Department of Computer Science and Engineering,

Shanghai Jiao Tong University

E-mail: kedebug0@gmail.com

GitHub: http://github.com/kedebug

-------------------------------------------------------

原文地址:https://www.cnblogs.com/kedebug/p/2814236.html