Chinaunix首页 | 论坛 | 博客
  • 博客访问: 282565
  • 博文数量: 87
  • 博客积分: 1206
  • 博客等级: 少尉
  • 技术积分: 725
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-16 00:12
个人简介

do the right things the right ways

文章分类

全部博文(87)

文章存档

2017年(5)

2016年(6)

2015年(1)

2012年(11)

2011年(64)

分类:

2011-10-27 13:07:13

  1. #include <iostream>
  2. #include <iomanip>

  3. using namespace std;

  4. struct Node
  5. {
  6.       Node* next;
  7.       int data;
  8. };

  9. struct Node* reverse(struct Node* head);

  10. int main()
  11. {
  12.      Node* head = new Node;
  13.      
  14.      head->data = 0;
  15.      head->next = NULL;
  16.      
  17.      Node* q = head;
  18.      
  19.      for(int i = 0; i < 10; ++i)
  20.      {
  21.              Node* tmp = new Node;
  22.              tmp->data = i + 1;
  23.              q->next = tmp;
  24.              q = tmp;
  25.     }
  26.     
  27.     q->next = NULL;
  28.     
  29.     Node *p = head;
  30.     
  31.     cout << "before : ";
  32.     while(p)
  33.     {
  34.              cout << std::left << setw(2) << p->data << " ";
  35.              p = p->next;
  36.     }
  37.     
  38.     cout << endl;
  39.     
  40.     cout << "reverse: ";
  41.     p = reverse(head);
  42.     
  43.     while(p)
  44.     {
  45.              cout << std::left << setw(2) << p->data << " ";
  46.              p = p->next;
  47.     }
  48.     
  49.     cout << endl;
  50.     
  51.     
  52.     system("pause");
  53.     return 0;
  54. }

  55. struct Node* reverse(struct Node* head)
  56. {
  57.       Node* p = head;
  58.       Node* q = NULL;
  59.       Node* r = NULL;
  60.      
  61.       while(p)
  62.       {
  63.               r = p->next;
  64.               p->next = q;
  65.               q = p;
  66.               p = r;
  67.      }
  68.     
  69.      return q;
  70. }

结果如下:

before : 0  1  2  3  4  5  6  7  8  9  10
reverse: 10 9  8  7  6  5  4  3  2  1  0

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