剑指offer-反转链表

2016/05/24 C和C++基础

题目描述

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

#include <iostream>
#include <vector>
using namespace std;
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
		vector<ListNode*> vec;
        ListNode *p=pHead;
        while(pHead!=NULL){
            vec.push_back(pHead);
            pHead=pHead->next;
        }
        if(p!=NULL){
        	ListNode *h=vec.back();
        	vec.pop_back();
        	h->next=vec.back();
        	int s=vec.size();
        	for(int i=s-1;i>=1;i--){
            	vec[i]->next=vec[i-1];
        	}
        	if(s!=0)
        		vec[0]->next=NULL;
        	else
            	h->next=NULL;
       		return h;
        }else
            return NULL;
    }
};

Search

    Post Directory