第 13 题(链表):题目:输入一个单向链表,输出该链表中倒数第 k 个结点.链表的倒数第 0 个结点为链表的尾指针.链表结点定义如下: struct ListNode {int m_nKey;ListNode* m_pNext;}; 我的思路:先翻转链表,再从翻转后的链表的头向尾数k-1个,返回,再次翻转链表. 代码如下:注意这个思路非常差.差的原因是:如果只是用最原始的方法,先遍历一遍计数,再遍历一遍找倒数第k个,需要遍历两遍.但我的思路,翻转两次链表就要遍历两遍.还要在走k-1步找倒数第k…
输入一个单向链表,输出该链表中倒数第K个结点,具体实现如下: #include <iostream> using namespace std; struct LinkNode { public: LinkNode(int value = 0) : nValue(value){ pNext = NULL; } ~LinkNode() { pNext = NULL; } //private: friend class LinkList; int nValue; LinkNode *pNext; }…
一.题目: 输入一个链表,输出该链表中倒数第k个结点. 二.思路: 用两个指针p1和p2,p2先跑k步,然后p1和p2同时跑,p2跑到头p1所在的位置就是倒数第k个节点.很简单吧?简单你也想不到,想到了也写不出来嘻嘻(*^__^*) …… 三.代码:    …
1. 题目描述 输入一个链表,输出该链表中倒数第k个结点. 2. 思路和方法 可以用两个指针,一个指针遍历到第k个结点的时候,第二个指针再走到第一个节点,然后两个指针的距离始终保持k-1.这样,当第一个指针的next==NULL,也就是走到最后一个节点的时候,第二个指针对应的位置,就是倒数第k个结点.这样的好处是能够节省一个循环,时间复杂度会相应降低,从Q(2N) 降低到到Q(N). 注意,但是需要一个小循环让第一个指针先走到第k个指针.同时也存在结点总数小于k的问题,如果循环还没有进行到k次,…
题目描述: 输入一个链表,输出该链表中倒数第k个结点.例如有一个链表有六个节点1,2,3,4,5,6.则它的倒数第二个节点为5 节点定义如下: public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } 思路一: 设置一个快指针,一个慢指针.像一把尺子,当尺子的一端移动到链表的末尾,则另一端则为倒数第k个节点. public class Solution { publ…
算法:输入一个链表,输出该链表中倒数第k个结点.<剑指offer> 思路加到注释里面了: 1:两个if判断是否返回值为空,首个为空,没有第k个值: 2:for循环找到倒数第k个值,返回为answer,也就是第count-k /** * @Author liguo * @Description 输入一个链表,输出该链表中倒数第k个结点. * @Data 2018-08-12 23:40 */ /* public class ListNode { int val; ListNode next =…
描述 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第0个结点为链表的尾指针. 链表结点定义如下: struct ListNode { int       m_nKey; ListNode* m_pNext; }; 详细描述: 接口说明 原型: ListNode* FindKthToTail(ListNode* pListHead, unsignedint k); 输入参数: ListNode* pListHead  单向链表 unsigned int k  倒数第k个结点 输出参数(…
输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针. 链表结点定义如下: struct ListNode { int       m_nKey; ListNode* m_pNext; }; 详细描述: 接口说明 原型: ListNode* FindKthToTail(ListNode* pListHead, unsignedint k); 输入参数: ListNode* pListHead  单向链表 unsigned int k  倒数第k个结点 输出参数(指针指…
题目描述: 输入一个链表,输出该链表中倒数第k个结点. (hint: 请务必使用链表.) 输入: 输入可能包含多个测试样例,输入以EOF结束. 对于每个测试案例,输入的第一行为两个整数n和k(0<=n<=1000, 0<=k<=1000):n代表将要输入的链表元素的个数,k代表要查询倒数第几个的元素. 输入的第二行包括n个数t(1<=t<=1000000):代表链表中的元素. 输出: 对应每个测试案例, 若有结果,输出相应的查找结果.否则,输出NULL. 样例输入: 5…
题目描述: 输入一个单向链表,输出该链表中倒数第k个结点 输入.输出描述: 输入说明:1.链表结点个数 2.链表结点的值3.输入k的值 输出说明:第k个结点指针 题目分析: 假设链表长度为n,倒数第k个结点=正序第n-k+1个结点,所以题目的实质可以看作是链表的遍历. 首先输入链表结点个数n与各个结点取值构建链表并返回链表的头指针: 其次,输入k,调用链表遍历函数,找到第n-k+1个结点. 代码实现: 主函数 import java.util.Scanner; public static voi…