Chinaunix首页 | 论坛 | 博客
  • 博客访问: 399078
  • 博文数量: 101
  • 博客积分: 2207
  • 博客等级: 大尉
  • 技术积分: 2508
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-19 20:45
文章分类

全部博文(101)

文章存档

2013年(15)

2012年(86)

我的朋友

分类: C/C++

2012-09-25 16:22:24


点击(此处)折叠或打开

  1. #include <iostream>
  2. struct Node
  3. {
  4.     Node* next;
  5.     int data;
  6.     Node(int d = 0, Node* r = NULL):data(d),next(r) {}
  7. };
  8. Node* RecReverse(Node* head)
  9. {
  10.     if (head == NULL || head->next == NULL)
  11.     {
  12.         return head;
  13.     }
  14.     Node *newhead = RecReverse(head->next);
  15.     head->next->next = head;
  16.     head->next = NULL;
  17.     return newhead;
  18. }

  19. Node* Reverse(Node* head)
  20. {
  21.     if (head == NULL || head->next == NULL)
  22.     {
  23.         return head;
  24.     }
  25.     Node* prev = head;
  26.     Node* now = head->next;
  27.     Node* tmp;
  28.     while (now)
  29.     {
  30.         tmp = now;
  31.         now = now->next;
  32.         tmp->next = prev;
  33.         prev = tmp;
  34.     }
  35.     head->next = NULL;
  36.     return prev;
  37. }

  38. int main()
  39. {
  40.     Node* root = new Node(1);
  41.     root->next = new Node(2);
  42.     root->next->next = new Node(5);
  43.     Node* newhead = Reverse(root);
  44.     Node* tmp = newhead;
  45.     for (; tmp; tmp = tmp->next)
  46.     {
  47.         printf("%d,",tmp->data);
  48.     } 
  49.       return 0; 
  50.  }

阅读(818) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~