当前位置:   article > 正文

链表面试题目:反转一个单链表的两种方法(解析+代码)

链表面试题目:反转一个单链表的两种方法(解析+代码)

我们继续来看一下单链表的题目和代码吧,把学习的知识运用到实际中,大家加油


先看OJ题目

OJ题目(反转单链表)

双指针法 

1.创建两个指针,为pre curr,curr指向头结点,curr用来遍历链表

2.curr指向下一个结点,要让这个结点的next 指向pre,当然我们首先要保存curr的next指针,保存在temp中,以免找不到

3.采用循坏的时候记得更新指针

 代码

  1. struct ListNode* reverseList(struct ListNode* head) {
  2. struct ListNode*curr=head;
  3. struct ListNode*pre=NULL;
  4. while(curr)
  5. {
  6. struct ListNode*temp=curr->next;
  7. curr->next=pre;
  8. pre=curr;
  9. curr=temp;
  10. }
  11. return pre;
  12. }

递归法

思想和双指针的一样,但是采用了递归的形势

 代码:

  1. struct ListNode* reverse(struct ListNode* curr, struct ListNode* prew) {
  2. if (!curr) {
  3. return prew;
  4. }
  5. struct ListNode* temp = curr->next;
  6. curr->next = prew;
  7. return reverse(temp, curr);
  8. }
  9. struct ListNode* reverseList(struct ListNode* head)
  10. {
  11. return reverse(head, NULL);
  12. }

希望对你有所帮助,希望可以收到一个赞呀~~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/645006
推荐阅读
相关标签
  

闽ICP备14008679号