【剑指offer 面试题15】链表中倒数第K个结点
思路:
定义两个指针同时指向head,第一个指针先走K-1步,随后二个指针同时移动,当第一个指针到末尾处时,第二个指针所指向的即为倒数第K个结点。
#include <iostream>
using namespace std; struct ListNode
{
int val;
ListNode *next;
ListNode(int v = ):val(v), next(NULL){}
}; ListNode *findLastKthnumber(ListNode **pListHead, unsigned int k)
{
if(*pListHead == NULL || k == )
return NULL; ListNode *pFirst = *pListHead;
ListNode *pSecond = *pListHead; for(int i = ; i < k - ; i++)
{
pFirst = pFirst->next;
if(pFirst == NULL)
return NULL;
} while(pFirst->next != NULL)
{
pFirst = pFirst->next;
pSecond = pSecond->next;
} return pSecond;
} int main()
{
ListNode *first = new ListNode();
ListNode *head = first; ListNode *second = new ListNode();
first->next = second;
first = first->next; ListNode *third = new ListNode();
first->next = third;
first = first->next; cout<<"初始链表: ";
ListNode *print = head;
while(print != NULL)
{
cout<<print->val<<" ";
print = print->next;
}
cout<<endl<<endl; cout<<"倒数第零个结点: ";
ListNode *res = findLastKthnumber(&head, );
if(res != NULL)
cout<<res->val<<endl;
else
cerr<<"error!"<<endl; cout<<"倒数第一个结点: ";
res = findLastKthnumber(&head, );
if(res != NULL)
cout<<res->val<<endl;
else
cerr<<"error!"<<endl; cout<<"倒数第二个结点: ";
res = findLastKthnumber(&head, );
if(res != NULL)
cout<<res->val<<endl;
else
cerr<<"error!"<<endl; cout<<"倒数第三个结点: ";
res = findLastKthnumber(&head, );
if(res != NULL)
cout<<res->val<<endl;
else
cerr<<"error!"<<endl; cout<<"倒数第四个结点: ";
res = findLastKthnumber(&head, );
if(res != NULL)
cout<<res->val<<endl;
else
cerr<<"error!"<<endl;
}
测试结果:
初始链表: 倒数第零个结点: error!
倒数第一个结点:
倒数第二个结点:
倒数第三个结点:
倒数第四个结点: error!
【剑指offer 面试题15】链表中倒数第K个结点的更多相关文章
- 剑指Offer:面试题15——链表中倒数第k个结点(java实现)
问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...
- 剑指Offer - 九度1517 - 链表中倒数第k个结点
剑指Offer - 九度1517 - 链表中倒数第k个结点2013-11-30 02:57 题目描述: 输入一个链表,输出该链表中倒数第k个结点.(hint: 请务必使用链表.) 输入: 输入可能包含 ...
- 剑指offer十四之链表中倒数第k个结点
一.题目 输入一个链表,输出该链表中倒数第k个结点. 二.思路 两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走(k-1)步,到达第k个节点.然后两个指针同时往后移动,当第一个结 ...
- 【剑指Offer】14、链表中倒数第k个结点
题目描述: 输入一个链表,输出该链表中倒数第k个结点.为了符合习惯,从1开始计数,即链表的尾结点是倒数第1个节点.例如,一个链表有6个结点,从头结点开始,它们的值依次是1,2,3,4,5,6. ...
- 剑指offer【13】- 链表中倒数第k个结点
输入一个链表,输出该链表中倒数第k个结点. /* public class ListNode { int val; ListNode next = null; ListNode(int val) { ...
- 面试题 15:链表中倒数第 k 个结点
面试题 15:链表中倒数第 k 个结点 题目:输入一个链表,输出该链表中倒数第 k 个结点.为了符合大多数人的习惯, 本题从 1 开始计数,即链表的尾结点是倒数第一个结点.例如一个有 6 个结点的 链 ...
- 剑指offer-面试题15.链表中倒数第k个结点
题目:输入一个链表,输出该链表的倒数第K个结点.为了符合大多数人的习惯,本题 从1开始计数,即链表的尾结点是倒数第1个节点.例如有一个链表有6个节点,从 头节点开始他们的值依次是1,2,3,4,5,6 ...
- 剑指offer(14)链表中倒数第K个节点
题目描述 输入一个链表,输出该链表中倒数第k个节点. 题目分析 用两个指针来跑,两个指针中间相距k-1个节点,第一个指针先跑,跑到了第k个节点时,第二个指针则是第一个节点. 这时候两个一起跑.当第一个 ...
- 【Offer】[22] 【链表中倒数第k个结点】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路分析 采用双指针的方法,第一个指针首先向前移动k-1个位置,第二个指针指向头节点,然后将 ...
- 15 链表中倒数第k个结点
输入一个链表,输出该链表中倒数第k个结点. p1先走k-1步,p1 p2再一起走 C++: /* struct ListNode { int val; struct ListNode *next; L ...
随机推荐
- hdu2013
http://acm.hdu.edu.cn/showproblem.php?pid=2013 #include<iostream> #include<stdio.h> #inc ...
- Project Euler 92:Square digit chains 平方数字链
题目 Square digit chains A number chain is created by continuously adding the square of the digits in ...
- Sina App Engine(SAE)入门教程(10)- Cron(定时任务)使用
参考资料 SAE Cron说明文档 Cron能干什么? cron 可以定时的触发一个脚本,在sae上最大的频率是一分钟一次.你可以用其来完成自己需要的业务逻辑,例如定期的抓取某些网页完菜信息的采集,定 ...
- css一个图片包含多个图片|网站侧栏导航
<html> <head><title>Hello World</title> <style> .style1{ width:60px;ma ...
- dubbo/dubbox部署资料收集
dubbo/dubbox部署资料收集 最近由于项目需要要部署bubbox,dubbo,在找资料过程中用的的一些网址如下,后来由于取消没有实际应用,以备今后再用 http://dubbo.io/Admi ...
- 设计模式之工厂方法模式VS简单工厂方法模式
名词解释: 简单工厂:这个实在是没什么解释的,就是一个工厂类,然后有一个方法,根据传递的参数可以通过switch(你也可以是if,或者是使用高端的反射 )来进行对象的创建. 工厂方法:定义一个用于创建 ...
- 你真的了解try{ return }finally{}中的return?
你真的了解try{ return }finally{}中的return? 今天去逛论坛 时发现了一个很有趣的问题: 谁能给我我解释一下这段程序的结果为什么是:2.而不是:3 代码如下: class ...
- 40. Combination Sum II
题目: Given a collection of candidate numbers (C) and a target number (T), find all unique combination ...
- Linux命令学习笔记(1)
groupadd 1.作用 groupadd命令用于将新组加入系统.2.格式groupadd [-g gid] [-o]] [-r] [-f] groupname3.主要参数-g gid:指定组ID号 ...
- 简单说说PHP优化那些事
我们在编写程序时,总是想要使自己的程序占用资源最小,运行速度更快,代码量更少.往往我们在追求这些的同时却失去了很多东西.下面我想讲讲我对PHP优化的理解.优化的目的是花最少的代价换来最快的运行速度与最 ...