对于单链表的逆置有两种方法可以实现
(1)利用辅助指针实现
基本思想:在遍历结点的过程中,设置辅助指针,用于记录先前遍历的结点。这样依次遍历的过程中只需修改其后继结点的next域即可。
实现代码如下:
typedef int DataType; //类型定义
typedef struct node{ //单链表定义
DataType data;
struct node* next;
}LinkedNode,*LinkList;
void ReverseList(LinkList& ListHead)
{
cout<<"Begin to Reverse the List"<<endl;
if( (NULL==ListHead)||(NULL==ListHead->next) )return ; //边界检测
LinkedNode* pPre=ListHead; //先前指针
LinkedNode* pCur=pPre->next; //当前指针
LinkedNode* pNext=NULL; //后继指针
while(pCur!=NULL)
{
pNext=pCur->next;
pCur->next=pPre;
pPre=pCur;
pCur=pNext;
}
ListHead->next=NULL; //这一步会使新的尾结点的next域置空