以下是目前所见写法最简洁的单向链表逆序算法。C/C++
转自http://blog.csdn.net/wangjiaoyu250/article/details/8744589
单链表逆序的循环算法如下所示:
LINK_NODE *ReverseLink(LINK_NODE *head)
{
LINK_NODE *nxt;
LINK_NODE *prev = NULL;
while(head != NULL)
{
nxt = head->next;
head->next = prev;
prev = head;
head = nxt;
}
return prev;
}
单链表逆序的递归算法如下所示:
LINK_NODE *ReverseLink2(LINK_NODE *head)
{
LINK_NODE *newHead;
if((head == NULL) || (head->next == NULL))
return head;
newHead = ReverseLink2(head->next); /*递归部分*/
head->next->next = head; /*回朔部分*/
head->next = NULL;
return newHead;
}