链表反转

来源:互联网 发布:java运行时异常 编辑:程序博客网 时间:2024/06/05 12:47

链表定义

复制代码
class ListNode {    int val;    ListNode next;    ListNode(int x) {        val = x;    }}
复制代码

 

非递归实现很简单,只需要遍历一遍链表,在遍历过程中,把遍历的节点一次插入到头部。

复制代码
public ListNode reverseList(ListNode head) {        ListNode prev = null;        while(head!=null){            ListNode tmp = head.next;            head.next = prev;            prev = head;            head = tmp;        }        return prev;    }
复制代码

 

递归实现:翻转head->为首的链表, 然后head变为尾部节点

复制代码
public ListNode reverseList(ListNode head) {        if(head==null||head.next ==null)            return head;        ListNode prev = reverseList(head.next);        head.next.next = head;        head.next = null;        return prev;    }
原创粉丝点击