下面是反转一个链表的两种方法:
一、循环算法
//反转一个链表,循环算法
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;
}