链表反转

1需要三个指针协同工作  工作指针   前指针  后指针

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
   if(pHead==NULL)
    return nullptr;
   ListNode * ReverseHeadNode=nullptr;//用来当做返回值的!!!
   ListNode * Node=pHead;     
    ListNode * pre=nullptr; 
        while(Node!=NULL)//从1到尾结点遍历
        {
       ListNode* pNext=Node->next;
         if(pNext==nullptr)//已经到达尾结点
           ReverseHeadNode=Node;
            
         Node->next=pre;
         pre= Node; 
         Node=pNext;    
        }        
      return  ReverseHeadNode; 
    }
};

 

posted @ 2019-08-20 18:45  高颖1995  阅读(99)  评论(0编辑  收藏  举报