转载请注明出处:http://blog.csdn.net/ns_code/article/details/25662121


在Cracking the Code Interview上做过了一次,这次在九度OJ上測试,AC。

题目描写叙述:

输入一个链表,输出该链表中倒数第k个结点。
(hint: 请务必使用链表。)

输入:

输入可能包括多个測试例子,输入以EOF结束。
对于每一个測试案例,输入的第一行为两个整数n和k(0<=n<=1000, 0<=k<=1000):n代表将要输入的链表元素的个数,k代表要查询倒数第几个的元素。
输入的第二行包括n个数t(1<=t<=1000000):代表链表中的元素。

输出:

相应每一个測试案例,
若有结果,输出相应的查找结果。否则,输出NULL。

例子输入:
5 2
1 2 3 4 5
1 0
5
例子输出:
4
NULL

AC代码;

/***************************************************
题目描写叙述:
找到单链表中倒数第n个元素
****************************************************/#include<stdio.h>
#include<stdlib.h>typedef struct Node
{int data;struct Node *pNext;
}NODE,*PNODE;/*
找到单链表中倒数第k个元素
*/
PNODE FindKthToLast(PNODE pHead,unsigned int k)
{ if(pHead==NULL || k<1)return NULL;PNODE p1 = pHead;PNODE p2 = pHead;while(p2!=NULL && k>0){p2 = p2->pNext;k--;}if(k>0)return NULL;while(p2 != NULL){p1 = p1->pNext;p2 = p2->pNext;}return p1;
}int main()
{int n,k;while(scanf("%d %d",&n,&k) != EOF){int i,data;scanf("%d",&data);PNODE pHead =(PNODE)malloc(sizeof(NODE));if(pHead == NULL)exit(EXIT_FAILURE);pHead->data = data;pHead->pNext = NULL;PNODE pCur = pHead;for(i=0;i<n-1;i++){scanf("%d",&data);PNODE pNew =(PNODE)malloc(sizeof(NODE));if(pNew == NULL)exit(EXIT_FAILURE);pNew->data = data;pNew->pNext = NULL;pCur->pNext = pNew;pCur = pCur->pNext;}PNODE pFind = FindKthToLast(pHead,k);if(pFind == NULL)printf("NULL\n");elseprintf("%d\n",pFind->data);}return 0;
}
/**************************************************************
    Problem: 1517
    User: mmc_maodun
    Language: C
    Result: Accepted
    Time:100 ms
    Memory:2496 kb
****************************************************************/

【剑指offer】链表倒数第k个节点相关推荐

  1. 剑指 offer 链表倒数的第k个数

    快慢指针 快指针线遍历到第k-1个数,然后慢指针在从头开始遍历,这样快慢指针有k-1个间隔,当快指针到链表末尾时,慢指针指的数就是倒数第k个数. public class Solution {     ...

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

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

  3. 【LeetCode】剑指 Offer 40. 最小的k个数

    [LeetCode]剑指 Offer 40. 最小的k个数 文章目录 [LeetCode]剑指 Offer 40. 最小的k个数 一.笨比解法 二.堆排序 三.快速选择 总结 一.笨比解法 选择排序变 ...

  4. 【算法leetcode每日一练】剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合

    文章目录 剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合: 样例 1: 样例 2: 提示: 分析 题解 java c c++ python go rust javascri ...

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

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

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

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

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

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

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

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

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

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

  10. 递增的整数序列链表的插入_每日算法题 | 剑指offer 链表专题 (5)链表中倒数第k个节点...

    点击上方"Jerry的算法和NLP",选择"星标"公众号 重磅干货,第一时间送达 题目 链表中倒数第k个节点 题目要求 输入一个链表的头结点,从尾到头反过来打印 ...

最新文章

  1. android最大json,Android:解析大型JSON文件
  2. 最新版FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用简解(提供博客园本地下载)
  3. 2013年3月编程语言排行榜:有毒的Java
  4. 在线生成文本图片 CFC函数计算版
  5. python连连看小游戏_利用Python制作一个连连看小游戏,边学边玩!
  6. Servlet→对象监听器、事件监听器、Session钝化活化、@WebListener标注、过滤器概念原理生命周期、过滤器链、@WebFilter标注、定时器Timer、cancel()、purge
  7. AD7124-4调试经验分享
  8. autocad不能画图_学了这些CAD技巧,画图速度迅速提高
  9. 使用docker搭建个人博客
  10. 计算机开机无自检声音,电脑启动不了,开机无自检声音,显示器不亮
  11. 抖音小店营业执照怎么办理?新手做抖店营业执照范围应该怎么选?
  12. 物体识别全流程(Ubuntu16.04)结合ROS
  13. js 字符串格式化format函数扩展
  14. chrome浏览器本地信息的获取与设置
  15. 文件描述符fd和文件指针File* fp的区别和转换
  16. scrapy学习(完全版)
  17. 多模态自编码器从EEG信号预测fNIRS静息态
  18. Python和Go语言的区别
  19. matlab 汽车振动,基于MatLab的车辆振动响应幅频特性分析
  20. xml文档规则_避免文档陷阱的7条规则

热门文章

  1. eclipse打开xml文件都显示为灰色
  2. SQL 两张结构一样的表合并查询
  3. IPMI从驱动到应用(下篇 )
  4. Android之AlterDialog介绍
  5. iOS 10 UserNotifications 框架解析
  6. openstack nova 源码分析4-nova目录下的driver.py
  7. Linux 命令(104)—— crontab 命令
  8. 解决UnicodeEncodeError。python的docker镜像增加locale 中文支持
  9. select获取下拉框的值 下拉框默认选中
  10. Android学习——Fragment动态加载