p9 翻转单链表(leetcode206)
Posted repinkply
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了p9 翻转单链表(leetcode206)相关的知识,希望对你有一定的参考价值。
一:解题思路
链表是递归定义的,所以关于链表的大部分问题也可以用递归来解决。当然也可以不用递归来解决这个问题。这里来介绍2种方法,一种是递归方法,一种是非递归的方法。
二:完整代码示例 (C++版和Java版)
递归版C++
class Solution { public: ListNode* reverseList(ListNode* head) { ListNode* ret = NULL; if (head == NULL) { ret = NULL; } else if (head->next == NULL) { ret = head; } else { ListNode* guard = head->next; ret = reverseList(head->next); guard->next = head; head->next = NULL; } return ret; } };
递归版Java
class Solution { public ListNode reverseList(ListNode head) { ListNode ret=null; if(head==null) { ret=null; } else if(head.next==null) { ret=head; } else { ListNode guard=head.next; ret=reverseList(head.next); guard.next=head; head.next=null; } return ret; } }
迭代法C++:
class Solution { public: ListNode* reverseList(ListNode* head) { ListNode* cur = head; ListNode* pre = NULL; while (cur != NULL) { ListNode* next = cur->next; cur->next = pre; pre = cur; cur = next; } return pre; } };
迭代法Java:
class Solution { public ListNode reverseList(ListNode head) { ListNode cur=head; ListNode pre=null; while(cur!=null) { ListNode next=cur.next; cur.next=pre; pre=cur; cur=next; } return pre; } }
以上是关于p9 翻转单链表(leetcode206)的主要内容,如果未能解决你的问题,请参考以下文章
微软面试题: LeetCode 206. 反转链表 出现次数:3