iterative太简单不写了
http://www.geeksforgeeks.org/write-a-function-to-reverse-the-nodes-of-a-linked-list/
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 #include <queue> 5 #include <stack> 6 #include <string> 7 #include <fstream> 8 #include <map> 9 #include <set> 10 using namespace std; 11 12 struct node { 13 int data; 14 node *next; 15 node() : data(0), next(NULL) { } 16 node(int d) : data(d), next(NULL) { } 17 }; 18 19 void push(node* &head, int k) { 20 node *new_node = new node(k); 21 new_node->next = head; 22 head = new_node; 23 } 24 25 void print(node *head) { 26 while (head) { 27 cout << head->data << " "; 28 head = head->next; 29 } 30 cout << endl; 31 } 32 33 void reverselist(node *&head) { 34 if (!head) return; 35 node *cur = head; 36 node *next = head->next; 37 if (!next) return; 38 reverselist(next); 39 cur->next->next = cur; 40 cur->next = NULL; 41 head = next; 42 } 43 44 int main() { 45 node *head = NULL; 46 push(head, 5); 47 push(head, 4); 48 push(head, 3); 49 push(head, 2); 50 push(head, 1); 51 print(head); 52 reverselist(head); 53 print(head); 54 return 0; 55 }