`

查找链表中倒数第k个结点

阅读更多
题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。

难点: 不能回退,不知道倒数第k个节点是顺数的第几个节点。

思路:让两个节点保持k的距离,如果最后一个节点到达链表末尾,第二个节点也就到了k的位置。---这叫做窗口概念。

class Window(){
  public int first;
  public int last;
  public Window(int k){
     first=-k;
  }

  public void move(){
     last++;
     first++;
  }

 
}

class Link{
  int val;
  Link next;
}


public void getLinkK(Link l,int k){
   Window w = new Window(k);
   while(l.next!=null){
      w.move();
      l=l.next;
   }
  
}


分享到:
评论

相关推荐

    查找链表中倒数第K个节点

    查找链表中倒数第K个节点,源代码验证通过,两种查找方法。

    2009计算机考研题:查找链表中倒数第k个结点

    本题目的核心是查找链表中的倒数第k个节点,这是一个经典的链表问题,常见于面试和考研试题中。下面我们将深入探讨这个问题以及如何通过编程解决。 首先,链表是由一系列节点组成的数据结构,每个节点包含一个数据...

    链表中倒数第k个结点

    本题的思路和之前看矩形那一题有相似之处,就是我们优先考虑边界情况,比如本题,我们需要查找链表中的倒数第K个节点,那么想象此时身处链表最后的位置,我想要知道前面K个位置的结点.就像是跑步一样,我先到达终点....

    C语言实现输出链表中倒数第k个节点

    总的来说,这个C语言程序实现了链表中倒数第k个节点的查找功能,通过遍历和双指针技巧有效地解决了问题。在实际应用中,这种技巧经常用于处理链表相关的数据结构问题,比如寻找中点节点或删除特定位置的节点等。理解...

    python实现获取单向链表倒数第k个结点的值示例

    本篇将详细讲解如何使用Python实现获取单向链表倒数第k个结点的值,并通过实例分析相关操作技巧。 首先,我们需要定义链表的节点类`Node`,它包含一个数据项`item`和一个指向下一个节点的引用`next`。节点的初始化...

    怎样找到链表倒数第k个元素

    题目:输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。 分析:使用两个指针,low,fast,先把fast的指针指向第k个元素,然后low和fast同时向后遍历,当fast遍历到结尾时,low...

    c++-c++编程基础之leetcode题解第19题删除链表的倒数第N个结点.zip

    对于本题,我们需要删除链表中的倒数第N个节点。这个问题可以通过双指针法来解决,这种方法不需要预先知道链表的长度,而是利用两个指针在链表上同步移动来找到目标节点。 首先,我们创建两个指针,一个快指针...

    cpp代码-输入一个链表,输出该链表中倒数第k个结点。

    在这个问题中,我们需要设计一个算法,输入一个链表的头节点和一个整数k,然后返回链表中倒数第k个节点。 首先,我们需要定义链表节点的结构体。通常,这会包含一个数据字段和一个指向下一个节点的指针: ```cpp ...

    查找倒数第N个结点(单链表)

    首先,我们要明确问题的要求:给定一个单链表的头节点和一个整数 n,我们需要找到链表中的倒数第 n 个节点。例如,如果链表为 1 -> 2 -> 3 -> 4 -> 5,且 n = 2,则目标节点是 4。 解决这个问题,我们可以采用双指...

    腾讯校园招聘笔试题技术类C语言.pdf

    5. **查找链表中倒数第k个结点**: - 双指针法可以高效地解决这个问题,让一个指针先向前移动k个节点,然后两个指针同时移动,当先移动的指针到达链表尾部时,另一个指针所在的位置就是倒数第k个节点。 6. **求...

    数据结构考研知识点总结.doc

    例如,查找链表中倒数第k个结点的问题,这需要利用指针进行高效遍历,既要考虑算法的时间复杂度,也要注意代码的实现细节。另一个例子是数组的循环左移操作,这涉及到数组元素的重新排列,需要通过两次反转来达到...

    09计算机考研统考题

    - **解析**:题目要求设计算法查找链表中倒数第K个结点,涉及链表的基本操作和算法设计。 3. **内存访问时间计算** - **知识点**:内存访问时间是衡量计算机性能的重要指标。 - **解析**:题目提供了虚拟地址和...

    linked-list:C用于单链表和双链表

    linked-list C for single linked list and double linked list single_list 结点结构体 创建结点 创建链表 显示链表的数据 获取链表长度 插入结点 ...查找倒数第K个结点 删除重复结点 查找中间结点

    C语言链表类面试题.docx

    5. **查找链表中倒数第k个节点** 找到链表中倒数第k个节点,可以采用双指针法。首先,一个指针移动k步,然后两个指针同时移动,直到第一个指针到达链表尾部,此时第二个指针所在的位置即为倒数第k个节点。这种方法...

    c++基础练习之链表数据结构.zip

    6. **查找链表中倒数第k个位置上的结点.cpp**:找出链表中倒数第k个节点需要计算链表长度,然后返回长度减去k的索引对应的节点。可以使用快慢指针(“龟兔赛跑”策略)来优化这一过程。 7. **判断是否是回文.cpp**...

    数据结构实验-1客房管理(链表应用实验)

    (7)函数void MoveK1(HLink &H, int k),将单链表中倒数第k个结点移到第一个结点位置,注意:严禁采用先计算链表长度n再减k(即n-k)的方法; (8)函数void ReverseN2(HLink &H),将单链表的正中间位置结点之后的全部...

    1_链表_

    4. **处理特殊情况**:如果目标节点是最后一个节点,我们需要特别注意,因为它的前驱节点将是链表的倒数第二个节点。这时,更新前驱节点的指针域为 `NULL` 即可表示删除了最后一个节点。 5. **更新链表头**:如果...

Global site tag (gtag.js) - Google Analytics