Reverse LinkedList

来源:互联网 发布:php极光推送的使用步骤 编辑:程序博客网 时间:2024/06/06 05:57

Reverse a singly linked list.


思路:

问题描述很简单,翻转一个链表。我们搜索链表,将每一个节点cur的前驱pre作为它的后继。然后继续下一个节点,但是我们在寻找下一个节点的时候(cur = cur.next),因为更改了cur的后继,cur.next反而会指向cur的原前驱节点pre。故我们需要用一个临时的指针temp来保存cur的原后继,在cur修改了后继之后,通过pre = cur,cur = temp来将指针后移。最后原head节点变成了尾节点,head.next = null。

画了个草图加以说明修改节点指向的过程。



public class ReverseLinkedList {    public ListNode reverseList(ListNode head) {    if(head == null || head.next == null) return head;    ListNode pre = head;    ListNode cur = pre.next;    while(cur != null) {    ListNode temp = cur.next;    cur.next = pre;    pre = cur;    cur = temp;    }    head.next = null;    return pre;    }}


阅读全文
0 0
原创粉丝点击