(1)单链表逆序的递归与非递归算法
Node* RecReverseList(Node* head) //递归方法
{
if (!head || !head->next)
{
return head;
}
Node *newhead = RecReverseList(head->next);
head->next->next = head;
head->next = NULL;
return newhead;
}
非递归算法:
Node* ReverseList(Node* head)
{
if (!head || !head->next)
{
return head;
}
Node* p1 = head;
Node* p2 = p1->next;
head->next = NULL;
while (p2)
{
p1 = p2;
p2 = p2->next;
p1->next = head;
head = p1;
}
return head;
}
Node* RecReverseList(Node* head) //递归方法
{
if (!head || !head->next)
{
return head;
}
Node *newhead = RecReverseList(head->next);
head->next->next = head;
head->next = NULL;
return newhead;
}
非递归算法:
Node* ReverseList(Node* head)
{
if (!head || !head->next)
{
return head;
}
Node* p1 = head;
Node* p2 = p1->next;
head->next = NULL;
while (p2)
{
p1 = p2;
p2 = p2->next;
p1->next = head;
head = p1;
}
return head;
}
本文介绍了单链表逆序的两种实现方式:递归与非递归算法。递归方法通过不断调用自身反转链表节点,而非递归方法采用迭代的方式逐步调整节点指针方向,最终达到链表逆序的目的。
1695

被折叠的 条评论
为什么被折叠?



