zoukankan      html  css  js  c++  java
  • 1.求链表中的倒数第K个节点

    注意事项:1、要是K大于链表长度怎么办?

         2、k<=0怎么办?

    ListNode* FindR_Kth(ListNode* p_head, unsigned int k)
     2 {//找到链表的倒数第K个节点
     3     //if (k==0)特殊处理
     4     //k小于链表长度,特殊处理
     5     if (p_head = nullptr)
     6         return nullptr;
     7     ListNode* first = p_head;
     8     ListNode* second = p_head;
     9     for (int i = 0; i < k - 1; i++)
    10     {
    11         first = first->next;
    12     }
    13     while (first->next != nullptr)
    14     {
    15         first = first->next;
    16         second = second->next;
    17     }
    18     return second;
    19 }
    

    最终的完善:

     struct ListNode{
     2     int value;
     3     ListNode* next;
     4 };
     5 ListNode* findKthToTail(ListNode *phead,unsigned int k)
     6 {
     7     if (k == 0)/
     8         return nullptr;
     9     if (phead == nullptr)
    10         return nullptr;
    11     ListNode *p1 = phead;
    12     ListNode *p2 = phead;
    13     for (int i = 1; i < k; ++i)
    14     {
    15         if (p1->next == nullptr){//若k比本身链表的最大长度还大则直接返回nullptr
    16             return nullptr;
    17         }
    18         p1 = p1->next;
    19     }
    20     while (p1->next != nullptr)
    21     {
    22         p1 = p1->next;
    23         p2 = p2 ->next;
    24     }
    25     return p2;
    26 }
    
  • 相关阅读:
    读入输出优化
    【JSOI2008】星球大战 并查集
    堆STL和重载运算符
    树的直径
    H3C三层交换机(S5500)清除配置信息并进行简单配置
    简单的逻辑学
    Java基础--第十八天
    Java基础--第十七天
    Java基础--第十六天
    Java基础--第十五天
  • 原文地址:https://www.cnblogs.com/davidyff/p/9414637.html
Copyright © 2011-2022 走看看