【剑指offer】链表倒数第k个节点
转载请注明出处: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个节点相关推荐
- 剑指 offer 链表倒数的第k个数
快慢指针 快指针线遍历到第k-1个数,然后慢指针在从头开始遍历,这样快慢指针有k-1个间隔,当快指针到链表末尾时,慢指针指的数就是倒数第k个数. public class Solution { ...
- 剑指Offer之寻找链表倒数第k个节点
题目描述 输入一个链表,输出该链表中倒数第k个结点. 代码及解析 用的快慢指针的思路 public class FindKthValue {static public class ListNode { ...
- 【LeetCode】剑指 Offer 40. 最小的k个数
[LeetCode]剑指 Offer 40. 最小的k个数 文章目录 [LeetCode]剑指 Offer 40. 最小的k个数 一.笨比解法 二.堆排序 三.快速选择 总结 一.笨比解法 选择排序变 ...
- 【算法leetcode每日一练】剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合
文章目录 剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合: 样例 1: 样例 2: 提示: 分析 题解 java c c++ python go rust javascri ...
- 单链表倒数第K个节点的查找和显示
单链表倒数第K个节点的查找和显示 最近在学回顾之前学到的知识,正好碰到了关于链表查找的一道面试题,在此贴出来,与小伙伴们共同交流~ 在刚看到题目,其实很容易就想到一个方法,就是先求链表的长度(leng ...
- 链表之删除双链表倒数第K个节点
链表之删除双链表倒数第K个节点 题目: 链表之删除双链表倒数第K个节点 思路: 之前写过 http://blog.csdn.net/u011068702/article/details/50280 ...
- 链表之删除单链表倒数第K个节点
删除单链表倒数第K个节点 题目: 删除单链表中倒数第K个节点, 思路: 给我们一个单链表,我们需要删除倒数第K个节点,比如链表每个节点值是1.2.3.4.5.6 K值是 ...
- java链表的输出_Java输出链表倒数第k个节点
问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...
- c++链表获取长度,链表翻转,查找链表倒数第K个节点以及中间点
c++链表获取长度,链表翻转, 查找链表倒数第K个节点以及中间点 测试数据 ListNode* pHead = new ListNode();pHead->m_key = 1;ListNode* ...
- 递增的整数序列链表的插入_每日算法题 | 剑指offer 链表专题 (5)链表中倒数第k个节点...
点击上方"Jerry的算法和NLP",选择"星标"公众号 重磅干货,第一时间送达 题目 链表中倒数第k个节点 题目要求 输入一个链表的头结点,从尾到头反过来打印 ...
最新文章
- android最大json,Android:解析大型JSON文件
- 最新版FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用简解(提供博客园本地下载)
- 2013年3月编程语言排行榜:有毒的Java
- 在线生成文本图片 CFC函数计算版
- python连连看小游戏_利用Python制作一个连连看小游戏,边学边玩!
- Servlet→对象监听器、事件监听器、Session钝化活化、@WebListener标注、过滤器概念原理生命周期、过滤器链、@WebFilter标注、定时器Timer、cancel()、purge
- AD7124-4调试经验分享
- autocad不能画图_学了这些CAD技巧,画图速度迅速提高
- 使用docker搭建个人博客
- 计算机开机无自检声音,电脑启动不了,开机无自检声音,显示器不亮
- 抖音小店营业执照怎么办理?新手做抖店营业执照范围应该怎么选?
- 物体识别全流程(Ubuntu16.04)结合ROS
- js 字符串格式化format函数扩展
- chrome浏览器本地信息的获取与设置
- 文件描述符fd和文件指针File* fp的区别和转换
- scrapy学习(完全版)
- 多模态自编码器从EEG信号预测fNIRS静息态
- Python和Go语言的区别
- matlab 汽车振动,基于MatLab的车辆振动响应幅频特性分析
- xml文档规则_避免文档陷阱的7条规则