leetcode 206. Reverse Linked List

来源:互联网 发布:网络工具软件 编辑:程序博客网 时间:2024/05/19 12:23

leetcode 206. Reverse Linked List

题目

Reverse a singly linked list.

解1

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode reverseList(ListNode head) {        if(head==null||head.next==null){            //如果这个链表为空或者这个链表只有一个结点,则直接返回即可            return head;        }        ListNode pre=head;        ListNode p=pre.next;        pre.next=null;        ListNode nxt=null;        while(p!=null){            nxt=p.next;            p.next=pre;            pre=p;            p=nxt;        }        return pre;    }}

解2(优解)

     public ListNode reverseList(ListNode head) {            if(head==null||head.next==null){                //如果这个链表为空或者这个链表只有一个节点,则直接返回即可                return head;            }            ListNode pReversedHead=null;            ListNode pNode=head;            ListNode pPrev=null;            while(pNode!=null){                ListNode pNext=pNode.next;                if(pNext==null)                    pReversedHead=pNode;                pNode.next=pPrev;                pPrev=pNode;                pNode=pNext;            }            return pReversedHead;        }
0 0
原创粉丝点击