Chinaunix首页 | 论坛 | 博客
  • 博客访问: 395051
  • 博文数量: 69
  • 博客积分: 1992
  • 博客等级: 上尉
  • 技术积分: 1162
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-03 19:50
文章分类
文章存档

2015年(1)

2011年(55)

2010年(13)

分类: C/C++

2011-07-31 21:10:12

  1. //已知链表的头结点head,写一个函数把这个链表逆序 ( Intel)  
  2. #include   
  3.   
  4. using namespace std;  
  5.   
  6. struct Node  
  7. {  
  8.     int data ;  
  9.     Node *next ;  
  10. };  
  11. typedef struct Node Node ;  
  12.   
  13. Node* ReverseList(Node* head)  
  14. {  
  15.     if (!head || !head->next)  
  16.     {  
  17.         return head;  
  18.     }  
  19.     Node* p1 = head;  
  20.     Node* p2 = p1->next;  
  21.     head->next = NULL;  
  22.     while (p2)  
  23.     {  
  24.           
  25.         p1 = p2;  
  26.         p2 = p2->next;  
  27.         p1->next = head;  
  28.         head = p1;  
  29.     }  
  30.     return head;  
  31. }  
  32.   
  33. Node* RecReverseList(Node* head) //递归方法  
  34. {     
  35.     if (!head || !head->next)  
  36.     {  
  37.         return head;  
  38.     }  
  39.     Node *newhead = RecReverseList(head->next);  
  40.     head->next->next = head;  
  41.     head->next = NULL;  
  42.     return newhead;  
  43. }   
  44.                         
  45. void main()  
  46. {  
  47.     Node a, b, c;  
  48.     a.data = 1, a.next = &b;  
  49.     b.data = 2, b.next = &c;  
  50.     c.data = 3, c.next = NULL;  
  51.     Node* tmp = &a;  
  52.     while(tmp)  
  53.     {  
  54.         cout<data<<" ";  
  55.         tmp = tmp->next;  
  56.     }  
  57.     cout<
  58.     tmp = RecReverseList(&a);  
  59.     while(tmp)  
  60.     {  
  61.         cout<data<<" ";  
  62.         tmp = tmp->next;  
  63.     }  
  64.     cout<
  65. }  
阅读(1108) | 评论(0) | 转发(0) |
0

上一篇:c++

下一篇:MP3

给主人留下些什么吧!~~