zoukankan      html  css  js  c++  java
  • 求链表的倒数第k个节点

    问题描述:给定一个链表的头节点,求出链表的倒数第k个节点。

    分析:这是链表里的经典问题,存在多种解法,下面给大家分享下我的想法。

            解法一:很直观的一种做法是从头到尾扫描链表,然后求倒数第k个,但是由于单链表无法从尾部向头部扫描,

                       因此可以借助其他的辅助空间去存储扫描过的所有节点,例如,数组或栈均可。

            解法二:计算出链表中节点的总数为n,根据k 将其转化为正数的第n-k+1个节点,然后在从链表头开始走n-k+1个节点,就是所求。

            解法三:可以设置两个指针实现,假设两个指针分别为p1和p2,p1从链表头开始,先走k-1步,然后p2从头开始走,p1和p2同时走,

                       等到p1走到尾节点,p2所指的节点就是所要求的节点。

            由于三种解法都比较简单,其中解法三很巧妙,我就不再写具体的程序了,读者可以自行验证。

  • 相关阅读:
    P2351 [SDOI2012]吊灯
    洛谷P1450 [HAOI2008]硬币购物 背包+容斥
    P5110 块速递推-光速幂、斐波那契数列通项
    AT2304 Cleaning
    CSP-S 2020
    CF487E Tourists
    P4334 [COI2007] Policija
    动态逆序对专练
    CF437D The Child and Zoo
    CF1032G Chattering
  • 原文地址:https://www.cnblogs.com/guozhenqiang/p/5483079.html
Copyright © 2011-2022 走看看