coding - 求单链表倒数第k个节点

来源:互联网 发布:java常用算法有哪些 编辑:程序博客网 时间:2024/04/29 00:18

题目描述:

输入一个单向链表,输出该链表中倒数第k 个结点。链表的倒数第0 个结点为链表的尾指针。
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};

思路:

定义一个指针p2,先移动k步,然后在定义一个指针p1,同时移动p1和p2,直到最后。

p1所指即为倒数第k个节点。

ListNode *FindKthNode(list *head, int k)      {                list *p, *q;        if (head == NULL || k < 0)                return NULL;        p = head;        while (p != NULL && k-- >= 0)        {                p = p->next;        }        if (p == NULL)                return k < 0 ? head : NULL;                q = head;        while (p != NULL)        {                p = p->next;                q = q->next;        }                return q;}



Reference:

http://blog.csdn.net/v_JULY_v/

原创粉丝点击