描述

利用单链表表示一个整数序列,请实现一个时间复杂度为O(n)、空间复杂度为O(1)的算法,通过一趟遍历在单链表中确定倒数第k个结点。

输入

多组数据,每组数据有三行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔),第三行为k。当n=0时输入结束。

输出

对于每组数据分别输出一行,输出每个链表的倒数第k个结点对应的数值。

输入样例 1

7
5 2 3 4 50 100 70
3
5
20 30 10 4 5
5
0

输出样例 1

50
20

思路:

说是倒数第k个节点,但是我们可以稍微转化一下把倒数转成正数来处理,这样就不用倒序了~在遍历的时候,由于题目给的是“第k个”节点,是节点的位置信息,而不是节点的数据信息,所以这种情况下采用for循环为主,p节点(为了取出数据)为辅的方式是妥当的。

同时,一旦找到,break就可以了,这样就更快了~

#include<string>
#include<iostream>
#include<map>
#include<vector>
#include<set>
#include<algorithm>
using namespace std;
typedef struct LNode
{int data;LNode* next;
}*linklist, LNode;
void TailInsert(linklist& l, int n)
{l = new LNode;l->next = NULL;linklist rear = l;for (int i = 0; i < n; i++){linklist p = new LNode;cin >> p->data;rear->next = p;rear = p;}rear->next = NULL;//不可或缺
}
void Find(linklist l, int n,int pos)
{linklist p = l->next;for (int i = 1; i <= n; i++){if (i == n-pos+1){cout << p->data << endl;break;}p = p->next;}
}
int main()
{int n;cin >> n;while (n){linklist l;TailInsert(l,n);int pos;cin >> pos;Find(l, n, pos);cin >> n;}return 0;
}

查找链表中倒数第k个结点(C++)相关推荐

  1. c语言找出链表中倒数第k的数,查找链表中倒数第k个结点

    题目:输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表的尾指针. 分析:为了得到倒数第 k 个结点,很自然的想法是先走到链表的尾端,再从尾端回溯 k 步.可是输入的是单 ...

  2. (关于单链表的真题)已知一个带有表头结点的单链表...请设计一个尽可能高效的算法,查找链表中倒数第k个位置的结点。

    真题描述 已知一个带有表头结点的单链表,结点结构为 data next 假设该链表只给出了头指针head.在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点. 若查找成 ...

  3. 已知一个带有表头的单链表,结点结构为data-link,假设该链表只给出了头指针list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。

    今天和大家分享一道2009年代码为408的一道真题: 已知一个带有表头的单链表,结点结构为data-link,假设该链表只给出了头指针list.在不改变链表的前提下,请设计一个尽可能高效的算法,查找链 ...

  4. [剑指offer]面试题15:链表中倒数第k个结点

    面试题15:链表中倒数第k个结点 题目:输入一个链表,输出该链表中倒数第 k 个结点.为了符合大多数人的习惯,本题从1 开始计数,即链表的尾结点是倒数第1 个结点.例如一个链表有6个结点,从头结点开始 ...

  5. 剑指offer_第14题_链表中倒数第k个结点_Python

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 理解 链表详解 python数据结构之链表 解题思路 思路1 确定链表种结点个数lenth 倒数第k个结点就是第length-k+1个结点 需要考 ...

  6. 【Java】找到链表中倒数第k个结点

    题目描述 : 输入一个链表,输出该链表中倒数第k个结点. 解题思路 : 1.根据以上链表进行分析 2.算法思想 : 定义两个引用,即快慢指针,都从头节点开始向后走: 要找到倒数第k个节点,即要让快指针 ...

  7. 剑指offer:链表中倒数第k个结点 python实现

    链表中倒数第k个结点 输入一个链表,输出该链表中倒数第k个结点. 解题思路 暴力求解: 判断链表是否为空: 复制链表,遍历一遍统计其长度: 如果长度小于k.则返回None: 否则,返回其长度-k的链表 ...

  8. 【剑指offer-Java版】15链表中倒数第K个结点

    链表中倒数第K个结点:快慢指针解决 需要注意的地方是 1) 可能会存在输入的链表大小小于k 2) 输入的k可能小于等于0 - 所以必须限定k大于0 public class _Q15 {public ...

  9. 面试经典:链表中倒数第k个结点?如何从大量数据中找出高频词?

    记录两道面试题: 题目描述: 输入一个链表,输出该链表中倒数第k个结点.(单向链表) 拿到这个问题的时候自然而然会想到让链表从末尾开始next   K-1 次不就是第K-1个节点了么,但是必须要注意一 ...

最新文章

  1. 比赛--建金字塔问题--解题报告
  2. Android layout 优化:使用include和merge 标签
  3. drive数据集_运动想象,脑电情绪等公开数据集汇总
  4. vb如何实现在cad中打开dxf文件_CDR转CAD方法
  5. java使用httpclient调用上传图片接口[示例]
  6. Python中的Pandas(1.pandas概述和Series的概述和相关操作)
  7. AOP概述及实现原理
  8. winform中键盘和鼠标事件的捕捉和重写(转)
  9. ios 持续获取定位 高德地图_iOS开发-- 高德地图的接入使用(1)定位
  10. 如何获取foreach循环当前迭代的索引?
  11. WEB安全基础理论笔记(幕布)
  12. selenium 各浏览器driver下载地址
  13. 阿里云服务器如何登录?阿里云服务器的三种登录方法
  14. gre作文3.5什么水平计算机专业,gre作文3.5分如何达到
  15. Css实现雷达扫描动画效果
  16. 期货公司开户实力经纪业务的规模
  17. K线形态识别—三K线之买入型三日K线组合
  18. starlink卫星轨道预报
  19. mac上彻底删除 搜狗输入法 鼠须管输入法
  20. 上海海事大学自动化专业C语言课程代码参考(第六周)

热门文章

  1. java 框架架构图_java框架之Spring 核心框架体系结构
  2. python字符串常用函数-大小写,删除空格,字符串切片
  3. vscode 本地调试和本地服务
  4. 建立你第一个 Outlook Add-in
  5. 兔子问题,斐波纳契数列
  6. Flutter StatefulBuilder 用来实现局部数据刷新
  7. CSS中flex和inline-flex的区别
  8. 原生ajax请求的五个步骤
  9. cf813C(bfs)
  10. vue中$watch源码阅读笔记