题目描述

输入一个链表,输出该链表中倒数第k个结点。
 
思路一:链表不能向前遍历,只能向后遍历。因此倒数第K个结点就是 正序的  :len(链表)-1-K的下一个。  注意,此处的思路与代码中具体实现有点不同,但是 是一致的。假设用i=0计数,那么应该就是i<len(链表)-k  或者 i<=len(链表)-k-1. 下列代码中是设置i=1开始,那么应该就是 i<len(链表)-k+1  或者 i<=len(链表)-k.
 
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
int len=0;
ListNode *p=pListHead;
while(p!=NULL) {
len++;//算出链表长度
p=p->next;
}
if(k>len || k<0) return NULL;//两种特殊情况
int i=1;   //设置一个变量
p=pListHead;//p重置为起点
while(i<len-k+1) {//直到整数第len(list)-k个位置,进行最后一层循环,到达
p=p->next;
i++;
}
return p;
}
};

 http://blog.csdn.net/hhh3h/article/details/20832387

另一种思路:

  

class Solution {
public:
ListNode* FindKthToTail(ListNode* p_head, unsigned int k)
{//找到链表的倒数第K个节点
//if(k==0)特殊处理,k小于链表长度,特殊处理
if (k==0 || p_head == nullptr)
return nullptr;
ListNode* first = p_head;
ListNode* second = p_head;
for (int i = 0; i < k - 1; i++) {
if(first->next== nullptr) return nullptr;
first = first->next;
}
while (first->next != nullptr)
{
first = first->next;
second = second->next;
}
return second;
}
};

  

https://m.baidu.com/from=2001a/bd_page_type=1/ssid=c534dcb1bcccd0f8341c/uid=0/pu=usm%401%2Csz%40320_1003%2Cta%40iphone_2_5.1_1_11.6/baiduid=CC7E451183AFD2E2A766A5E6F241C7F9/w=0_10_/t=iphone/l=3/tc?ref=www_iphone&lid=13759879435784551619&order=2&fm=alop&tj=www_normal_2_0_10_title&vit=osres&m=8&srd=1&cltj=cloud_title&asres=1&nt=wnor&title=求链表中的倒数第K个节点-General_up-博客园&dict=30&w_qd=IlPT2AEptyoA_ykx5fEcv4a6DFlPc7onxiUXo48TrfK-&sec=23004&di=c048fb26097f7fab&bdenc=1&tch=124.332.162.435.1.248&nsrc=IlPT2AEptyoA_yixCFOxXnANedT62v3IEQGG_ytK1DK6mlrte4viZQRARTL6NWmXH9jgtCPQpt5Ywk_e0G5o7hVDwvQkfjS&eqid=bef4e971a2240000100000005985ba10&wd=&clk_info=%7B"srcid"%3A"1599"%2C"tplname"%3A"www_normal"%2C"t"%3A1501936158515%2C"sig"%3A"12735"%2C"xpath"%3A"div-div-div2-a-p-em"%7D&sfOpen=1&sfr_fb=0&qq-pf-to=pcqq.c2c

输出链表的倒数第K个值的更多相关文章

  1. 输出链表中倒数第k个节点

    题目描述 输入一个链表,输出该链表中倒数第k个结点. struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x ...

  2. 查找单链表的倒数第k个值

    刚开始,我想到的是一种笨方法,先遍历单链表,计算出单链表的长度len,然后再从头遍历单链表到第len-k个节点,那么 这个节点既是单链表的倒数第k个节点. 不过这种算法时间复杂度挺高的,还有一种更简单 ...

  3. 剑指offer-第三章高质量的代码(输出该链表中倒数第K个节点)

    题目:输入一个链表,输出这个链表中倒数第K个节点.(代码的鲁棒性) 思路:用两个指针p1和p2,都指向头节点,开始的时候,p2不动,p1移动k-1次,指向第k个节点.此时,如果p1->next! ...

  4. 输出单向链表中倒数第k个结点

    描述 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针. 链表结点定义如下: struct ListNode { int       m_nKey; ListNode* ...

  5. 算法:输入一个链表,输出该链表中倒数第k个结点。

    算法:输入一个链表,输出该链表中倒数第k个结点.<剑指offer> 思路加到注释里面了: 1:两个if判断是否返回值为空,首个为空,没有第k个值: 2:for循环找到倒数第k个值,返回为a ...

  6. [华为]输出单向链表中倒数第k个结点

    输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针. 链表结点定义如下: struct ListNode { int       m_nKey; ListNode* m_ ...

  7. 输出单项链表中倒数第k个结点——牛客刷题

    题目描述: 输入一个单向链表,输出该链表中倒数第k个结点 输入.输出描述: 输入说明:1.链表结点个数 2.链表结点的值3.输入k的值 输出说明:第k个结点指针 题目分析: 假设链表长度为n,倒数第k ...

  8. 【编程题目】输入一个单向链表,输出该链表中倒数第 k 个结点

    第 13 题(链表):题目:输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表的尾指针.链表结点定义如下: struct ListNode {int m_nKey;Lis ...

  9. 输入一个单向链表,输出该链表中倒数第K个结点

    输入一个单向链表,输出该链表中倒数第K个结点,具体实现如下: #include <iostream> using namespace std; struct LinkNode { publ ...

随机推荐

  1. AtCoder Regular Contest 100 Equal Cut

    Equal Cut 思路: 枚举中间那个分界点,然后两边找使得切割后差值最小的点,这个可以用双指针 代码: #include<bits/stdc++.h> using namespace ...

  2. 用原生js来处理跨域的数据(jsonp)

    说明总结: 1.ajax和jsonp其实本质上是不同的东西.ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提 ...

  3. Python全栈开发-有趣的小程序

    进度条的打印 import sys,time for i in range(20): sys.stdout.write('$')      #stdout是标准输出的意思,在一般电脑上,stdout的 ...

  4. ES7: 展开语法spread syntax:

    第一次遇到: payload = {...payload, manufacturer: state.manufacturers.filter(x => x._id === payload.man ...

  5. drf 需求案例1

    案例: 实现过程: 1. 创建一个项目: django-adim startproject dfr3 2.  创建 一个app    homwork python manage.py startapp ...

  6. css 选择器二

    2.4 盒模型 2.4.1 定义 在CSS中,"box model"这一术语是用来设计和布局时使用,然后在网页中基本上都会显示一些方方正正的盒子.我们称为这种盒子叫盒模型. 盒模型 ...

  7. SpringMVC的底层实现

    SpringMVC的底层实现流程: SpringMVC的核心是DispatchServlet,它负责接收HTTP的请求和协调SpringMVC中各个组件来完成请求处理的任务,一个请求被截获后,Disp ...

  8. python第三方库scrapy框架的安装

    1.确认python和pip安装成功 2.安装win32py          提供win32api,下载地址:https://sourceforge.net/projects/pywin32/fil ...

  9. PAT 1013 Battle Over Cities

    1013 Battle Over Cities (25 分)   It is vitally important to have all the cities connected by highway ...

  10. python模块安装注意事项

    在安装python的第三方模块时,需要注意路径问题. 1.如果python是按默认位置安装的,则可以直接在命令提示符中进行安装,即pip install module_name. 2.如果python ...