单链表反转

方法1:将单链表储存为数组,然后按照数组的索引逆序进行反转。

        方法2:使用三个指针遍历单链表,逐个链接点进行反转。

方法2代码:

  1. Node * ReverseList(Node *head)  
  2. {  
  3.     Node *p1,*p2,*p3;  
  4.     if(head==NULL||*head==NULL)  
  5.     return head;  
  6.     p1=head;  
  7.     p2=p1->next;  
  8.     while(p2)             //注意条件  
  9.     {  
  10.         p3=p2->next;       //要改变p2->next的指针,所以必须先保留p2->next           
  11.         p2->next=p1;  
  12.         p1=p2;            //循环往后  
  13.         p2=p3;  
  14.     }  
  15.     head->next=NULL;   //原先的head已经变成tail,别忘了置空,只有到这步才能置空  
  16.     *head=p1;  
  17.     return head;  
  18. }  
posted @ 2016-09-22 21:36  梦中山河  阅读(131)  评论(0编辑  收藏  举报