删除单链表的倒数第k个结点】的更多相关文章

策略 直接遍历总数为len,再次遍历第len-k+1个就是答案,但是这样遍历了O(N+k)个,可以在O在更短的时间内找到 图示 参考代码 #include <iostream> using namespace std; typedef struct ListNode { int value; ListNode* next; }ListNode; void createList(ListNode *&head) { head = new(ListNode); head->value…
本文转自:程序员面试题6--查找链表中倒数第k个结点 题目:输入一个单向链表,输出该链表中倒数第k个结点.链表的倒数第0个结点为链表的尾指针.链表结点定义如下: struct ListNode { int        m_nKey; ListNode* m_pNext; }; 分析:为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步.可是输入的是单向链表,只有从前往后的指针而没有从后往前的指针.因此我们需要打开我们的思路. 既然不能从尾结点开始遍历这个链表,我们还是把思路…
思路1:定义两个指针变量p和q,初始时均指向头节点的下一个节点(链表的第一个节点),p指针沿链表移动: 当p指针移动到第k个节点时,q指针开始与p指针同步移动, 当p指针移动到最后一个节点时,q指针所指节点就是倒数第k个节点. 思路2:利用栈实现,遍历链表依次入栈,然后出k次栈就找到那个节点了. 1.定义栈结构typedef struct{ int length; ]; }Stack; void push(Stack &s,int v){ if(s.length <= 50){ s.valu…
今天很悲催,心中向往的公司,打电话过来面试,问到我两个问题,结果竟然都没有回答上,伤心了,记录下今天失败,希望以后不要被同样的问题给PASS. 问题1.如何判断是否为闰年 所谓闰年那就是:四年一闰,百年不闰,四百年再闰. 其实代码也就是 if((n%4 == 0 && n%100 != 0) || n %400 == 0){} 最原始的方法. 记不住判断闰年的定义,导致无法回答. 问题2.如何获得单链表的倒数第K个元素(时间复杂度最小) 方法(1) 首先查找到整个链表中的元素个数, 然后再…
刚开始,我想到的是一种笨方法,先遍历单链表,计算出单链表的长度len,然后再从头遍历单链表到第len-k个节点,那么 这个节点既是单链表的倒数第k个节点. 不过这种算法时间复杂度挺高的,还有一种更简单的方法,就是设置两个指针,分别指向单链表的头节点,然后让其中一个指针,先走k步, 之后,再让两个指针同时走,直到第一个指针走到单链表尾节点结束. 那么,第二个指针所指向的节点,就是倒数第k个节点. 代码如下: #include <iostream> #include <cstdlib>…
1.找到单链表的倒数第K个节点 2.判断一个单链表对否形成环形 3.单链表翻转…
输入一个单向链表,输出该链表中倒数第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个结点. 方法1: 这个解法要循环两次链表 /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution1 { public ListNode FindKthToTail(ListNode list,int k) { if (list == null) return list; Li…
面试题 15:链表中倒数第 k 个结点 题目:输入一个链表,输出该链表中倒数第 k 个结点.为了符合大多数人的习惯, 本题从 1 开始计数,即链表的尾结点是倒数第一个结点.例如一个有 6 个结点的 链表,从头结点依次是 1,2,3,4,5,6.倒数第三个结点就是值为 4 的结点. 最初思路:先遍历链表得到链表总长度,然后length-k+1位置的结点就是所求结点.但是需要遍历两遍 改进:用两个指针,两个指针之间距离相差k-1;当第一个指针都到链表尾结点,那么第二个指针就在倒数第k 注意程序的鲁棒…
鲁棒性是指程序可以推断输入是否符合规范要求,并对不和要求的输入予以 合理的处理. 题目链接地址: http://ac.jobdu.com/problem.php?pid=1517 题目1517:链表中倒数第k个结点 时间限制:1 秒内存限制:128 兆特殊判题:否提交:2159解决:958 题目描写叙述: 输入一个链表,输出该链表中倒数第k个结点. (hint: 请务必使用链表.) 输入: 输入可能包括多个測试例子.输入以EOF结束. 对于每一个測试案例.输入的第一行为两个整数n和k(0<=n<…