Struct ListNode
{
int data;
ListNode* next;
}
//递归实现
ListNode * ReverseList(ListNode * head)
{
//如果链表为空或者链表中只有一个元素
if(head==NULL || head->next==NULL)
return head;
else
{
ListNode* newHead=ReverseList(head->next);//先反转后面的链表
head->next->next=head;//再将当前节点设置为其然来后面节点的后续节点(head->next是最后一个节点,head是倒数第二个节点,然后设置倒数第二个的next节点为空)
head->next=NULL;
}
return newHead;
}
//非递归实现
ListNode * ReverseList(ListNode * phead)
{
if(phead==NULL)
return NULL;
ListNode* pPrev=NULL;
ListNode* pNode=phead;
ListNode* ReverseNode=NULL;
while{pNode!=NULL}
{
ListNode* pNext=pNode->next;
if(pNext==NULL) ReverseNode=pNode;
pNode->next=pPrev;
pPrev=pNode;
pNode=pNext;
}
return ReverseNode;
}
反转链表,递归/非递归实现
最新推荐文章于 2024-02-06 20:41:38 发布