题目:有一个带头结点的单链表,设计一个函数找到指定的倒数第k个节点,输出节点值,并返回1,否则返回0,前提不能改变链表,尽可能高效

分析:
        我们可以先统计出总共的节点数count,那么该节点的顺序数num=count-k+1,当然如果k>count,直接返回0,时间复杂度为O(n)
        这里还有另一种更加便捷的方法,只需对链表遍历一次,我们设立两个指针,最开始均指向首节点,然后让q先移动k个节点,之后p
        q同步移动,当q为NULL时,p所在的位置便是倒数第k个节点的位置

代码:

struct Link {int data;struct Link *next;
};
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int findTheReciprocalK(Link *h,int k) {//这是第一种解法struct Link *p = h->next;int count = 0,num;while (p) {//统计元素个数count++;p = p->next;}p = h->next;if (k > count) {return 0;}else {num = count - k + 1;while (--num) {//这里要用--num,如果用num--,会导致p为下一个元素,注意p = p->next;}printf("%d",p->data);return 1;}
}
int findTheRecipr

寻找链表倒数第k个节点相关推荐

  1. 剑指Offer之寻找链表倒数第k个节点

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 代码及解析 用的快慢指针的思路 public class FindKthValue {static public class ListNode { ...

  2. 单链表倒数第K个节点的查找和显示

    单链表倒数第K个节点的查找和显示 最近在学回顾之前学到的知识,正好碰到了关于链表查找的一道面试题,在此贴出来,与小伙伴们共同交流~ 在刚看到题目,其实很容易就想到一个方法,就是先求链表的长度(leng ...

  3. 链表之删除双链表倒数第K个节点

    链表之删除双链表倒数第K个节点 题目: 链表之删除双链表倒数第K个节点   思路: 之前写过 http://blog.csdn.net/u011068702/article/details/50280 ...

  4. 链表之删除单链表倒数第K个节点

    删除单链表倒数第K个节点 题目: 删除单链表中倒数第K个节点, 思路:             给我们一个单链表,我们需要删除倒数第K个节点,比如链表每个节点值是1.2.3.4.5.6     K值是 ...

  5. java链表的输出_Java输出链表倒数第k个节点

    问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...

  6. c++链表获取长度,链表翻转,查找链表倒数第K个节点以及中间点

    c++链表获取长度,链表翻转, 查找链表倒数第K个节点以及中间点 测试数据 ListNode* pHead = new ListNode();pHead->m_key = 1;ListNode* ...

  7. 链表倒数第k个节点_面试题 02.02. 返回倒数第 k 个节点

    实现一种算法,找出单向链表中倒数第 k 个节点.返回该节点的值.注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2 输出: 4 说明:给定的 k ...

  8. 输出链表倒数第K个节点

    题目 输入一个单向链表,输出该链表中倒数第 k  个结点.链表的倒数第 0  个结点为链表的尾指针. 思路 算是比较简单的题目了. 解法一: 可以先遍历一遍统计链表个数,然后找到倒数第k个的下标再遍历 ...

  9. python 链表倒数第k个节点_链表-删除单链表中倒数第k个节点

    题目 实现一个函数,一个可以删除单链表中倒数第k个节点 难度 简单 分析 本题比较简单,实现方法多种多样,这里提供一种方法 首先明确一点,在单链表中删除倒数第k个节点,需要找到他的前一个节点,让前一个 ...

最新文章

  1. 飞书在线文档 美誉度国内最佳!一起来围观~
  2. mysql中utf8_general_cs和utf8_general_ci和utf8_bin的一点区
  3. embed中 src属性动态更改。
  4. 16.U-boot的工作流程分析-2440
  5. PAT 1079 Total Sales of Supply Chain[比较]
  6. SecureCRT连接虚拟机中的Linux系统
  7. php 多选按钮,单选和多选按钮如何给图片加样式
  8. Altium Designer中的长度单位如何转换?
  9. 【微信小程序】自定义导航栏
  10. html5 sha1,js-sha1加密
  11. CISCO三层交换机配置
  12. python基础之排列组合以及正则表达式
  13. 第四十七题 UVA437 巴比伦塔 The Tower of Babylon
  14. win10小喇叭出现红叉,解决办法(转)
  15. java yyyy m d_JAVA SimpleDateFormat使用YYYY-MM-dd的坑
  16. 08.甲流疫情死亡率
  17. python函数基础
  18. Android 新的锁屏接口的实现
  19. 温湿度DHT10读写例程
  20. 微信小程序开发入门-个人笔记

热门文章

  1. eclipse插件:打开选中文件所在的目录
  2. 网页Loading,让页面加载完再显示
  3. this.get_element .style为空或不是对象
  4. mouseover/out和mouseenter/leave的区别及用法
  5. css绘画三角形,实现一些图形
  6. 电机的入门之路系列5--二相四线,四相五线,四相六线电机的区分方法
  7. 机器学习实战4-sklearn训练线性回归模型(鸢尾花iris数据集分类)
  8. PTA9、计算利率 (10 分)
  9. 阿里云镜像下载ubuntu
  10. rust进水器怎么用_喷丝板钻孔速度太慢怎么办?用这款增速器,效率提高35%