我们继续来看一下单链表的题目和代码吧,把学习的知识运用到实际中,大家加油
先看OJ题目
OJ题目(反转单链表)
双指针法
1.创建两个指针,为pre curr,curr指向头结点,curr用来遍历链表
2.curr指向下一个结点,要让这个结点的next 指向pre,当然我们首先要保存curr的next指针,保存在temp中,以免找不到
3.采用循坏的时候记得更新指针
代码
struct ListNode* reverseList(struct ListNode* head) {struct ListNode*curr=head;struct ListNode*pre=NULL;while(curr){struct ListNode*temp=curr->next;curr->next=pre;pre=curr;curr=temp;}return pre;
}
递归法
思想和双指针的一样,但是采用了递归的形势
代码:
struct ListNode* reverse(struct ListNode* curr, struct ListNode* prew) {if (!curr) {return prew;}struct ListNode* temp = curr->next;curr->next = prew;return reverse(temp, curr);
}
struct ListNode* reverseList(struct ListNode* head)
{return reverse(head, NULL);
}
希望对你有所帮助,希望可以收到一个赞呀~~