单链表翻转

相比之前的那个方法:206. Reverse Linked List
这个方法比较简单,直接在链表上面进行逆序
容易理解

//
//  反转单链表.cpp
//  反转单链表
//
//  Created by lee on 2018/10/20.
//  Copyright © 2018年 lee. All rights reserved.
//

#include <iostream>
using namespace std;

struct Node{
    int val;
    Node *next = NULL;
    Node(int x):val(x), next(NULL) {}
};

Node* reverseLinkedList(Node *head){
    Node *cur = head;
    Node *pre = NULL;
    while(cur != NULL){
        Node *next = cur->next;
        cur->next = pre;
        pre = cur;
        cur = next;
    }
    return pre;
}
int main(int argc, const char * argv[]) {
    Node *n1 = new Node(1);
    Node *n2 = new Node(4);
    Node *n3 = new Node(8);
    Node *n4 = new Node(7);
    n1->next = n2;
    n2->next = n3;
    n3->next = n4;

    Node *it = n1;
    while (it != NULL){
        cout << it->val << " ";
        it = it->next;
    }
    cout << endl;

    Node *res = reverseLinkedList(n1);
    while (res != NULL){
        cout << res->val << " ";
        res = res->next;
    }
    cout << endl;
    return 0;
}