206. Reverse Linked List

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了206. Reverse Linked List相关的知识,希望对你有一定的参考价值。

Reverse a singly linked list.

解题思路:

求一个链表的逆序。一种方法是遍历链表,将节点保存到stack中,在一个个出栈加到链表中;另一个方法是遍历链表,将每个节点插入到队首。。

   

C++ 8ms

/**

 * Definition for singly-linked list.

 * struct ListNode {

 *     int val;

 *     ListNode *next;

 *     ListNode(int x) : val(x), next(NULL) {}

 * };

 */

class Solution {

public:

    ListNode* reverseList(ListNode* head) {

        if(head==NULL)return head;

        ListNode* root=new ListNode(0);

        ListNode* p=head;

        while(p!=NULL){

            ListNode*q=p->next;

            p->next=root->next;

            root->next=p;

            p=q;

        }

        return root->next;

    }

};

   

Java 0ms

/**

 * 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)return head;

        ListNode p=head;

        ListNode root=new ListNode(0);

        while(p!=null){

            ListNode q=p.next;

            p.next=root.next;

            root.next=p;

            p=q;

        }

        return root.next;

    }

}

   

3ms

public class Solution {

   public ListNode reverseList(ListNode head) {

        if(head==null)return head;

        Stack<Integer>stack=new Stack<Integer>();

        ListNode p=head;

        while(p!=null){

            stack.push(p.val);

            p=p.next;

        }

        p=head;

        while(p!=null){

            p.val=stack.pop();

            p=p.next;

        }

        return head;

    }

}

 

以上是关于206. Reverse Linked List的主要内容,如果未能解决你的问题,请参考以下文章

206. Reverse Linked List

206. Reverse Linked List

206. Reverse Linked Listeasy

No 206, Reverse Linked List

206. Reverse Linked List

206. Reverse Linked List