单链表逆置

  基本思想:在遍历结点过程中,设置辅助指针,用于记录先前遍历的结点。这样依次编译的过程中只需修改其后继结点的next域即可。

         实现代码:

 

  1. typedef int DataType; //类型定义  
  2. typedef struct node{  //单链表定义  
  3.       DataType data;  
  4.       struct node* next;  
  5. }LinkedNode,*LinkList;  
  6. void ReverseList(LinkList& ListHead)  
  7. {  
  8.     cout<<"Begin to Reverse the List"<<endl;  
  9.     if( (NULL==ListHead)||(NULL==ListHead->next) )return ;  //边界检测  
  10.     LinkedNode* pPre=ListHead;    //先前指针  
  11.     LinkedNode* pCur=pPre->next;  //当前指针  
  12.     LinkedNode* pNext=NULL;       //后继指针  
  13.     while(pCur!=NULL)  
  14.     {  
  15.         pNext=pCur->next;  
  16.         pCur->next=pPre;  
  17.         pPre=pCur;  
  18.         pCur=pNext;  
  19.     }  
  20.     ListHead->next=NULL;  
  21.     ListHead=pPre;        //记录下新的头结点  
  22. }  


                

 

 

           示意图:

posted on 2014-06-28 10:40  上海—Michael  阅读(195)  评论(0编辑  收藏  举报