Data Structure Linked List: Write a function to reverse a linked list

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 }

 

你可能感兴趣的:(function)