链表翻转

Posted zhaochunhua12345

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链表翻转相关的知识,希望对你有一定的参考价值。

/*
 struct ListNode 
     int val;
     struct ListNode *next;
     ListNode(int x) :
             val(x), next(NULL) 
     
 ;*/
 class Solution 
 public:
     ListNode* ReverseList(ListNode* pHead)
     
         // 反转指针
         ListNode* pNode=pHead;  // 当前节点
         ListNode* pPrev=nullptr;// 当前节点的上一个节点
         ListNode* pNext=nullptr;// 当前节点的下一个节点
         ListNode* pReverseHead=nullptr;//新链表的头指针
 
         // 反转链表
         while(pNode!=nullptr)
         
             pNext=pNode->next; // 建立链接
           
             if(pNext==NULL)    // 判断pNode是否是最后一个节点
                 pReverseHead=pNode;
 
             pNode->next=pPrev; // 指针反转
             pPrev=pNode;
             pNode=pNext;
         
         return pReverseHead;
     
 ;

以上是关于链表翻转的主要内容,如果未能解决你的问题,请参考以下文章

翻转链表——链表

翻转链表

leetCode 25 K个一组翻转链表

LintCode Python 简单级题目 35.翻转链表

翻转链表

Java 求解翻转链表