下面是反轉一個鏈表的兩種方法:
一、循環算法
//反轉一個鏈表,循環算法
LinkList Reverse(LinkList& head)
{
// if(!head)
// return head;
//此時不用判斷head是否為空,如是空的話返回的也是空
LinkList cur = head;
LinkList hou;
LinkList beh = 0;
while (cur)
{
hou = cur->next;
cur->next = beh;
beh = cur;
cur = hou;
}
return beh;
}
二、遞歸算法
//反轉一個鏈表,遞歸算法
LinkList Reverse(LinkList& head)
{
if(!head || !head->next)
return head;
LinkList n = Reverse(head->next);
head->next->next = head;
head->next = NULL;
return n;
}