/*
思路1:翻指针法
将每个节点的next节点的指向翻转⼀下,指向前⼀个节点,即实现链表翻转
*/
struct ListNode* TurnOverPoint(struct ListNode* head)
{
struct ListNode* prev=NULL;//prev指针初始为为NULL,考虑链表本⾝为空的情况
struct ListNode* cur=head;
while(cur)
{
struct ListNode* next=cur->next;//先保存下⼀个节点,防⽌下⾯翻指针过程中丢失
next节点
cur->next=prev;
prev=cur;
cur=next;
}
return prev;//prev最终指向原链表最后⼀个节点,即翻转后的第⼀个节点
}
/*
思路2:头插法
将链表每个节点重新⼀个⼀个的头插到⼀个新链表上,即实现链表翻转
*/
struct ListNode* PushFront(struct ListNode* head)
{
struct ListNode* cur=NULL;//cur指针初始化为NULL,考虑链表本⾝为空的情况
while(head)
{
struct ListNode* next=head->next;//先保存下⼀个节点,防⽌下⾯翻指针过程中丢失
next节点
//头插
head->next=cur;
cur=head;
head=next;
}
return cur;//cur最终指向原链表最后⼀个节点,即翻转后的第⼀个节点
}