1.辅助指针
void ReverseList(LinkList* ListHead)
{
if(NULL==ListHead || NULL==ListHead->next)
return;
LinkList* pPre=ListHead;
LinkList* pCur=ListHead->next;
LinkList* pNext=NULL;
while(NULL!=pCur)
{
pNext=pCur->next;
pCur->next=pPre;
pPre=pCur;
pCur=pNext;
}
ListHead->next=NULL;
ListHead=pPre;
}
2.递归
void ReverseList(LinkedNode* pCur, LinkedNode* pHead)
{
if(NULL==pCur || NULL==pCur->next)
pHead=pCur;
else
{
LinkedNode* pNext=pCur->next;
ReverseList(pNext,pHead);
pNext->next=pCur;
pCur->next=NULL;
}
}
#从尾节点开始逆序;在最后1个节点时,进行了pCur->next非空的判断;并且每一次的转化都将上一个节点的next置为NULL;由于递归函数记录了节点的信息,并不会造成数据的丢失。
时间: 2024-10-11 06:58:57