206. Reverse Linked List

题目206. Reverse Linked List

Reverse a singly linked list.
click to show more hints.
Hint:
A linked list can be reversed either iteratively or recursively. Could you implement both?

1,递归
 public ListNode reverseList(ListNode head) {
        ListNode tempHead = new ListNode(1);
        ListNode node = head;
        reverse(tempHead,node);
        return tempHead.next;
     }
     
     private void reverse(ListNode head, ListNode node){
         if(node == null){
             return;
         }
         ListNode tempNode = node.next;
         node.next = head.next;
         head.next = node;
         reverse(head,tempNode);
     }
2,非递归
public ListNode reverseList(ListNode head) {
        ListNode tempHead = new ListNode(1);
        ListNode node = head;
        ListNode tempNode = null;
        while(node != null){
            tempNode = node.next;
            node.next = tempHead.next;
            tempHead.next = node;
            node = tempNode;
        }
        return tempHead.next;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容