zoukankan      html  css  js  c++  java
  • 剑指offer——面试题18:删除链表的节点

      1 #include"List.h"
      2 
      3 void DeleteNode(ListNode** pHead,ListNode* pToBeDeleted)
      4 {
      5     if(*pHead==nullptr || pToBeDeleted==nullptr)
      6         return;
      7     if(pToBeDeleted->m_pNext!=nullptr)
      8     {
      9         ListNode* pNext=pToBeDeleted->m_pNext;
     10         pToBeDeleted->m_pNext=pNext->m_pNext;
     11         pToBeDeleted->m_Value=pNext->m_Value;
     12         delete pNext;
     13         pNext=nullptr;
     14     }
     15     else if(pToBeDeleted==*pHead)
     16     {
     17         delete pToBeDeleted;
     18         pToBeDeleted=nullptr;
     19         *pHead=nullptr;
     20     }
     21     else
     22     {
     23         ListNode* pNode=*pHead;
     24         while(pNode->m_pNext!=pToBeDeleted)
     25             pNode=pNode->m_pNext;
     26         pNode->m_pNext=nullptr;
     27         delete pToBeDeleted;
     28         pToBeDeleted=nullptr;
     29     }
     30 }
     31 void Test(ListNode* pListHead, ListNode* pNode)
     32 {
     33     printf("The original list is: 
    ");
     34     PrintList(pListHead);
     35 
     36     printf("The node to be deleted is: 
    ");
     37     PrintListNode(pNode);
     38 
     39     DeleteNode(&pListHead, pNode);
     40 
     41     printf("The result list is: 
    ");
     42     PrintList(pListHead);
     43 }
     44 
     45 // 链表中有多个结点,删除中间的结点
     46 void Test1()
     47 {
     48     ListNode* pNode1 = CreateListNode(1);
     49     ListNode* pNode2 = CreateListNode(2);
     50     ListNode* pNode3 = CreateListNode(3);
     51     ListNode* pNode4 = CreateListNode(4);
     52     ListNode* pNode5 = CreateListNode(5);
     53 
     54     ConnectListNodes(pNode1, pNode2);
     55     ConnectListNodes(pNode2, pNode3);
     56     ConnectListNodes(pNode3, pNode4);
     57     ConnectListNodes(pNode4, pNode5);
     58 
     59     Test(pNode1, pNode3);
     60 
     61     DestroyList(pNode1);
     62 }
     63 
     64 // 链表中有多个结点,删除尾结点
     65 void Test2()
     66 {
     67     ListNode* pNode1 = CreateListNode(1);
     68     ListNode* pNode2 = CreateListNode(2);
     69     ListNode* pNode3 = CreateListNode(3);
     70     ListNode* pNode4 = CreateListNode(4);
     71     ListNode* pNode5 = CreateListNode(5);
     72 
     73     ConnectListNodes(pNode1, pNode2);
     74     ConnectListNodes(pNode2, pNode3);
     75     ConnectListNodes(pNode3, pNode4);
     76     ConnectListNodes(pNode4, pNode5);
     77 
     78     Test(pNode1, pNode5);
     79 
     80     DestroyList(pNode1);
     81 }
     82 
     83 // 链表中有多个结点,删除头结点
     84 void Test3()
     85 {
     86     ListNode* pNode1 = CreateListNode(1);
     87     ListNode* pNode2 = CreateListNode(2);
     88     ListNode* pNode3 = CreateListNode(3);
     89     ListNode* pNode4 = CreateListNode(4);
     90     ListNode* pNode5 = CreateListNode(5);
     91 
     92     ConnectListNodes(pNode1, pNode2);
     93     ConnectListNodes(pNode2, pNode3);
     94     ConnectListNodes(pNode3, pNode4);
     95     ConnectListNodes(pNode4, pNode5);
     96 
     97     Test(pNode1, pNode1);
     98 
     99     DestroyList(pNode1);
    100 }
    101 
    102 // 链表中只有一个结点,删除头结点
    103 void Test4()
    104 {
    105     ListNode* pNode1 = CreateListNode(1);
    106 
    107     Test(pNode1, pNode1);
    108 }
    109 
    110 // 链表为空
    111 void Test5()
    112 {
    113     Test(nullptr, nullptr);
    114 }
    115 
    116 int main(int argc, char* argv[])
    117 {
    118     Test1();
    119     Test2();
    120     Test3();
    121     Test4();
    122     Test5();
    123 
    124     return 0;
    125 }
    View Code
  • 相关阅读:
    docker容器日志收集方案(方案四,目前使用的方案)
    docker容器日志收集方案(方案三 filebeat+journald本地日志收集)
    docker容器日志收集方案(方案二 filebeat+syslog本地日志收集)
    docker容器日志收集方案(方案一 filebeat+本地日志收集)
    企业业务数据处理用“work”还是“MQ”
    spring cloud 实践之hystrix注意事项
    微服务架构理论-扩展立方体篇
    C# asp.net PhoneGap html5
    C# Where
    网站分布式开发简介
  • 原文地址:https://www.cnblogs.com/acm-jing/p/10408766.html
Copyright © 2011-2022 走看看