zoukankan      html  css  js  c++  java
  • 【剑指offer】链表中倒数第k个节点,C++实现(链表)

    1.题目

          输入一个链表,输出该链表中倒数第k个结点。链表的尾节点是倒数第一个节点。

    struct ListNode
    {
            int val;
            struct ListNode *next;
    }

    2.思路

          两个指针遍历链表:第一个指针从链表的头节点走k-1步,第二个指针不动;从第k步开始,第二个指针也开始从链表的头节点开始遍历,直到第一个指针指向链表结尾。由于两个指针的距离保持k-1,当第一个指针到达链表的尾节点时,第二个指针指向倒数第k个节点。举例:打印有6个节点链表倒数第3个节点。

                                                                  剑指Offer(十四):链表中倒数第k个结点

    3.code

    鲁棒性:

    1.输入k=0时,输出nullptr

    2.输入头指针为空时,输出nullptr

    3.输入k大于链表长度时,输出nullptr

    功能测试:

    1.第k个节点在链表的中间

    2.第k个节点是链表的头结点

    3.第k个节点是链表的尾结点

      1 /*
      2 struct ListNode {
      3 	int val;
      4 	struct ListNode *next;
      5 	ListNode(int x) :
      6 			val(x), next(NULL) {
      7 	}
      8 };*/
      9 class Solution {
     10 public:
     11     ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
     12         // 查找倒数第0个节点和输入空指针
     13     	if(pListHead == NULL || k == 0){
     14             return NULL;
     15         }
     16 
     17         // 两个指针遍历链表
     18         ListNode *pAhead = pListHead;
     19         ListNode *pBehind = pListHead;
     20 
     21         // 第一个指针从链表的头结点走K-1步
     22         for(unsigned int i = 0; i < k - 1; i++){
     23             if(pAhead->next != NULL){
     24                 pAhead = pAhead->next;
     25             }
     26             else{
     27                 return NULL;
     28             }
     29         }
     30 
     31         // 第k个节点开始,两个指针同时遍历
     32         while(pAhead->next != NULL){
     33             pAhead = pAhead->next;
     34             pBehind = pBehind->next;
     35         }
     36         return pBehind;
     37     }
     38 };
  • 相关阅读:
    MongoDB简单使用
    证明Whiile比for的效率高
    Python的垃圾回收机制
    Google C++编程风格指南
    AVR GCC对端口的操作指南
    Android Audio 分析
    nesC 语言参考手册
    浅析Linux操作系统工作的基础
    【python】bytearray和string之间转换,用在需要处理二进制文件和数据流上
    Matlab 仿真实现TI Instaspin 的Foc 逆Clarke变换和SVPWM
  • 原文地址:https://www.cnblogs.com/wanglei5205/p/8566309.html
Copyright © 2011-2022 走看看