首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
查找单链表的倒数第k个值
】的更多相关文章
查找单链表的倒数第k个值
刚开始,我想到的是一种笨方法,先遍历单链表,计算出单链表的长度len,然后再从头遍历单链表到第len-k个节点,那么 这个节点既是单链表的倒数第k个节点. 不过这种算法时间复杂度挺高的,还有一种更简单的方法,就是设置两个指针,分别指向单链表的头节点,然后让其中一个指针,先走k步, 之后,再让两个指针同时走,直到第一个指针走到单链表尾节点结束. 那么,第二个指针所指向的节点,就是倒数第k个节点. 代码如下: #include <iostream> #include <cstdlib>…
查找单链表中倒数第k个结点
本文转自:程序员面试题6--查找链表中倒数第k个结点 题目:输入一个单向链表,输出该链表中倒数第k个结点.链表的倒数第0个结点为链表的尾指针.链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; }; 分析:为了得到倒数第k个结点,很自然的想法是先走到链表的尾端,再从尾端回溯k步.可是输入的是单向链表,只有从前往后的指针而没有从后往前的指针.因此我们需要打开我们的思路. 既然不能从尾结点开始遍历这个链表,我们还是把思路…
查找单链表中倒数第K个位置上的结点,若查找成功返回该节点的data域,若不成功只返回0
算法的基本设计思想:定义两个指针变量p和q 初始时均指向头结点的下一个结点(即链表的第一个结点)p沿链表移动,当p移动到第k个结点时,q指针开始与p指针同时移动,当p指针移动到最后一个结点时,q指针所指示结点为倒数第k个结点 typedef struct LNode{ int data; struct LNode* next; }LNode, *Linklist; int search_k(Linklist list , int k) { LNode *p = list->next; LNod…
判断闰年的方法以及如何获得单链表的倒数第K个元素
今天很悲催,心中向往的公司,打电话过来面试,问到我两个问题,结果竟然都没有回答上,伤心了,记录下今天失败,希望以后不要被同样的问题给PASS. 问题1.如何判断是否为闰年 所谓闰年那就是:四年一闰,百年不闰,四百年再闰. 其实代码也就是 if((n%4 == 0 && n%100 != 0) || n %400 == 0){} 最原始的方法. 记不住判断闰年的定义,导致无法回答. 问题2.如何获得单链表的倒数第K个元素(时间复杂度最小) 方法(1) 首先查找到整个链表中的元素个数, 然后再…
20140719 找到单链表的倒数第K个节点 判断一个链表是否成为一个环形 反转
1.找到单链表的倒数第K个节点 2.判断一个单链表对否形成环形 3.单链表翻转…
输出链表的倒数第K个值
题目描述 输入一个链表,输出该链表中倒数第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 va…
单链表输出倒数第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…
面试题-----求单链表的倒数第k个节点
#include <iostream> using namespace std; struct node{ int value; struct node *next; }; struct node *head; void insert(struct node * &head,int value) { if(head == NULL) { head = new struct node; head->value = value; head->next = NULL; retur…
删除单链表的倒数第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…
C++获取单链表的倒数第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) { if(pListHead == NULL || k == 0){ return NULL; } ListNode *pAhea…