博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
12、链表中倒数第k个结点
阅读量:3925 次
发布时间:2019-05-23

本文共 710 字,大约阅读时间需要 2 分钟。

题目

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

思路

为了能够只遍历一次就能找到倒数第k个节点,可以定义两个指针:

(1)第一个指针从链表的头指针开始遍历向前走k-1,第二个指针保持不动;

(2)从第k步开始,第二个指针也开始从链表的头指针开始遍历;

(3)由于两个指针的距离保持在k-1,当第一个(走在前面的)指针到达链表的尾结点时,第二个指针(走在后面的)指针正好是倒数第k个结点。

下图展示了在有6个结点的链表上找倒数第3个结点的过程

  

代码

public class Solution {    public ListNode FindKthToTail(ListNode head,int k) {        //遍历整个链表长度length,如果给出的k值大于length,那么直接出错        int length =0;        ListNode head1 = head;        while(head1!=null){            length++;            head1 = head1.next;        }        if(k<=0 || k>length)            return null;        //找到链表的第一个和第二个指针,分别为ahead和behind        ListNode ahead = head;        ListNode behind =head;;        //将ahead的位置移到k-1 位置,此时链表起始位为behind        for(int i=0;i

转载地址:http://ezugn.baihongyu.com/

你可能感兴趣的文章
obex_io.c
查看>>
Linux程序开发基础概念
查看>>
Linux系统环境变量详谈
查看>>
sprintf函数用法
查看>>
make的常见错误信息
查看>>
gdb命令手册
查看>>
gdb中设置共享库断点问题
查看>>
GBD调试程序(转)作者:Janlex
查看>>
OpenOBEX代码
查看>>
第16章可移植性
查看>>
linux下open()与fopen()
查看>>
小型软件公司的绩效考核
查看>>
程序编译中如何调试configure
查看>>
关于安装multiget出现XML::Parser perl module is required for intltool错误问题的解决
查看>>
从学习export命令理解到的Shell环境和变量生存期
查看>>
《程序员》杂志:小公司如何建设技术中层
查看>>
glibc是什么,以及与gcc的关系?
查看>>
转 arm-linux-gcc和arm-elf-gcc 区别
查看>>
使用 typedef 抑制劣质代码
查看>>
Bluez下的rfcomm层通信测试程序
查看>>