zoukankan      html  css  js  c++  java
  • 反转链表

        题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点,链表节点定义如下:

    1   struct ListNode{
    2 
    3     int m_nKey;
    4     ListNode* m_pNext;
    5 
    6   };

        解析:注意的问题1、输入链表的头指针为NULL或者整个链表只有一个节点时,程序会崩溃;2、输入的链表只有一个节点;3、反转后链表出现断裂;4、对链表指针的操作顺序

     1 struct ListNode{
     2     int m_nKey;
     3   ListNode* m_pNext;
     4 };
     5 
     6 ListNode* ReverseList(ListNode* pListHead){
     7     if(pListHead == NULL)
     8         return NULL;
     9     ListNode* pReverseNode = NULL;//用来做反转后的头结点
    10     ListNode* pPrevNode = NULL;//指向当前节点的前一个节点
    11     ListNode* pNode = pListHead;//当前节点
    12     while(pListHead->m_pNext!=NULL){
    13         ListNode* pNextNode = pNode->m_pNext;//保存当前节点的下一个节点,避免出现断裂的情况
    14         if(pNextNode == NULL)
    15             pReverseNode = pNode;
    16         pNode->m_pNext = pPrevNode;
    17         pPrevNode = pNode;
    18         pNode = pNextNode;
    19     }
    20     return pReverseNode;
    21 }
  • 相关阅读:
    BZOJ2874 训练士兵 主席树
    单纯形 BZOJ3112: [Zjoi2013]防守战线
    珠宝 jewelry 省选模拟
    FWT [BZOJ 4589:Hard Nim]
    后缀自动机SAM BZOJ 2806
    就是要第一个出场的albus 【BZOJ】 线性基
    冲刺第十二十三天
    冲刺第十 十一天
    阅读8.9.10
    冲刺第八九天
  • 原文地址:https://www.cnblogs.com/yangrenzhi/p/5780922.html
Copyright © 2011-2022 走看看