求链表的倒数第k个节点】的更多相关文章

php实现求链表中倒数第k个节点 一.总结 $head = $head->next; //1.将$head节点next域里面的记录的那个地址值($head节点的下一个节点的地址)给$head,$head本来也就是记录地址的 二.php实现求链表中倒数第k个节点 题目描述: 输入一个链表,输出该链表中倒数第k个结点. 三.代码 <?php /*class ListNode{ var $val; var $next = NULL; function __construct($x){ $this-&…
问题描述:给定一个链表的头节点,求出链表的倒数第k个节点. 分析:这是链表里的经典问题,存在多种解法,下面给大家分享下我的想法. 解法一:很直观的一种做法是从头到尾扫描链表,然后求倒数第k个,但是由于单链表无法从尾部向头部扫描, 因此可以借助其他的辅助空间去存储扫描过的所有节点,例如,数组或栈均可. 解法二:计算出链表中节点的总数为n,根据k 将其转化为正数的第n-k+1个节点,然后在从链表头开始走n-k+1个节点,就是所求. 解法三:可以设置两个指针实现,假设两个指针分别为p1和p2,p1从链…
注意鲁棒性和算法效率的典型例题:(头文件省略) typedef struct node { int data; struct node* next; }ListNode; ListNode* FindKthToTail(ListNode* pListHead, unsigned int k); int main() { int i; ; ListNode *head, *p; //随机数种子 srand((unsigned )); //生成链表 head = p = new ListNode;…
PS:这是一道出境率极高的题目,记得去年参加校园招聘时我看到了3次,但是每次写的都不完善. 一.题目:链表的倒数第k个节点 题目:输入一个链表,输出该链表中倒数第k个结点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点.例如一个链表有6个结点,从头结点开始它们的值依次是1.2.3.4.5.6.这个链表的倒数第3个结点是值为4的结点. 链表的节点定义如下,这里使用的是C#来定义: public class Node { public int Data { get; set…
题目:输入一个链表,输出这个链表中倒数第K个节点.(代码的鲁棒性) 思路:用两个指针p1和p2,都指向头节点,开始的时候,p2不动,p1移动k-1次,指向第k个节点.此时,如果p1->next!=null,则同时移动P1和p2.直到p1指向最后一个节点.此时,P2指向倒数第k个节点. C++代码: #include<iostream> using namespace std; struct ListNode { int m_nValue; ListNode* m_pNext; }; Li…
本题来自<剑指offer> 链表中倒数第k个节点 题目: 输入一个链表,输出该链表中倒数第k个结点. 思路: 倒数第k个节点,而且只能访问一遍链表,定义两个节点,两者之间相差k个距离,遍历到尾节点,则便找到了倒数k节点了. 考虑代码的鲁棒性.代码的鲁棒是指程序能够判断输入是否合乎规范要求,并对不合理的输入给予合理的处理. 1.如果传入的根节点是空:直接返回空 2.传入的数据少于k个:在遍历前k个节点时候,如果发现为空,则直接返回空 3.传入的k为小于或者等于0:直接返回空 4.正常的数据,fi…
/** * 面试题15:链表中倒数第K个节点 * 输入一个链表,输出该链表中倒数第k个结点. */ public class _15_linked_K { public static void main(String[] args){ Solution15 solution15 = new Solution15(); ListNode15 l5 = new ListNode15(1); l5.next=new ListNode15(2); l5.next.next=new ListNode15(…
///////////////////////////////////////////////////////////////////////////////////// // 5. 题目15 链表中倒数第K个节点 //时间复杂度:O(n),空间复杂度O(n) ListNode<int>* KthNodeFromEnd(ListNode<int>* pNode, int k) { ) { return NULL; } ListNode<int>* p = pNode;…
题目描述 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5.6.这个链表的倒数第3个节点是值为4的节点. 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 1.思路 先求出整个链表有多少个数据,然后向后移动n-k+1个位置就行了. 为什么是n-k+1呢?拿例子来说,n=5,k=2,n-k=3:如…
寻找链表的倒数第k个节点 题目:已知一个带有表头结点的单链表,节点结构为(data,next),假设该链表只给出了头指针list.在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的节点(k为正整数),若查找成功,返回指向该节点的指针:否则,返回nullptr. 解法:设置两个指针p1,p2同时指向单链表的表头,令p2向后移动k个节点.下图为k=3的情况 之后同步向后移动p1和p2,当p2为nullptr的时候,p1即为所求. 代码: struct Node { int…