链表与双指针

发布于 2020-06-25  687 次阅读


实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。
注意:本题相对原题稍作改动
示例:
输入: 1->2->3->4->5 和 k = 2
输出: 4
解题思路:双指针,同起点出发,A先走K步,之后B再跟A一起出发,当A指向空时,B指向目标值,循环结束;
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
int kthToLast(struct ListNode* head, int k){
                struct ListNode*a=head;
                while(k--)
                {
                       a=a->next;
                }//结束后a指向3;
                while(a)
               { 
                     a=a->next;
                     head=head->next;
                }
return head->val;
}

她喜欢所以就做咯