zoukankan      html  css  js  c++  java
  • 链表中倒数第k个结点

    题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下:

    struct ListNode
    {
          int       m_nKey;
          ListNode* m_pNext;
    };

    题目不难,能快速想到解决的方法就是定义两个指针,第一个比第二个快k-1个节点。这样,当第一个到达尾节点时,第二个刚好停留在倒数第k个节点上。

    实现起来的话,就是先让第一个先next k-1个,然后两个再同步next。OK

    ListNode* PrintNext_K(ListNode* L,int k){
       if(!L||k<0)
           return ;
       int i = 0;
       ListNode* p1 = L;
       ListNode* p2 = L;
       while((i < k)&& p1)
          p1 = p1->next;
       if(!p1)
          return ;
       while(p1){
          p1 = p1->next;
          p2 = p2->next;
       }
       return p2;
    }
  • 相关阅读:
    python反射
    numpy笔记
    leetcode43
    leetcode-42
    The Github Flow
    leetcode-37
    leetcode-41
    leetcode-40
    TCP扫盲2
    字节码分析与操作
  • 原文地址:https://www.cnblogs.com/idealing/p/3477528.html
Copyright © 2011-2022 走看看