• 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 }
    
  • 相关阅读:
    利用Linux系统生成随机密码的8种方法
    go语言中ASCII&unicode&utf8由来
    go语言指针
    js设计模式=封装
    python中urllib.request对象案例
    php实现jwt
    python错误捕获练习
    python多线程
    python多进程练习
    http三次握手,四次挥手
  • 原文地址:https://www.cnblogs.com/davidyff/p/9414637.html
Copyright © 2020-2023  润新知