码迷,mamicode.com
首页 > 其他好文 > 详细

13,反转链表《剑指offer》

时间:2017-09-13 18:25:43      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:链表   输出   丢失   思路   反转链表   str   public   nod   cpp   

题目:

输入一个链表,反转链表后,输出链表的所有元素。

思路:

反转链表,对于片段 1--->2--->3循环操作; 要反转链表需要两步:

一,将2->next指向1 (如果不保存3那么此时就丢失了对3的引用)

二,将链表往后移 即 : 1=2; 2=3;3=3->next

注意的点:

一,首节点的next要指向NULL

二:链表的长度可能小于3

代码:

/*
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 NULL;
      ListNode* newHead;
      ListNode* p1=pHead;
      ListNode* p2=pHead->next;
      ListNode* p3; 
      if(p2!=NULL){
         p3=p2->next;
         p1->next=NULL;
         p2->next=p1;
         while(p3!=NULL){
               p1=p2;
               p2=p3;
               p3=p3->next;
               p2->next=p1;
        }
        newHead=p2;
      }else{
         p1->next=NULL;
         newHead=p1;
      }
      return newHead;
    }
};

  

13,反转链表《剑指offer》

标签:链表   输出   丢失   思路   反转链表   str   public   nod   cpp   

原文地址:http://www.cnblogs.com/llauser/p/7516311.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!