簡體   English   中英

如何在Java中反轉LinkedList

[英]How to reverse LinkedList in java

請先接受我的道歉,但是我無法在Java中顛倒我的鏈接列表。

我有上課和內課:

MyList{

class Element{
private Element next;

public Element getNext(){return next;}
}

 public void reverseMyList(Element curr) {

        if (curr.next == null) {
            head = curr.next;
            return;
        }
        reverseMyList(curr.next);
        while (curr.next != null) {
            curr.next.next = curr.next;
            curr.next = null;
        }
}//:~

我需要反轉我的列表,我使用的是方法reverseMyList,它需要Element curr。 在這種情況下我的思維方式是否正確?

先感謝您!

由於這有點像作業,因此在這里我不會介紹整個解決方案,但是我將解釋您應該如何從概念上解決問題。

假設您有2個鏈接列表。 您有需要反轉的輸入列表,並且有一個空列表。

如果您繼續從原始列表中刪除第一個元素,並一直將其放在新列表的前面 ,直到您的原始列表為空,則新列表將是原始列表,除非相反。

public static void Reverse(Element element)
    {
        Element current = element;
        Element next = current.Next;
        Element nextToNext;

        var first = current;

        while (next != null && next.Next != null)
        {
            nextToNext = next.Next;

            next.Next = current;

            current = next;

            next = nextToNext;
        }

        if (next != null)
        {
            next.Next = current;
        }

        first.Next = null;
    }

您正在尋找的方法已經存在於包java.utils

Collections.reverse(mylist);

此方法將直接更改列表中元素的順序,並且您無需實例化新的列表對象 ... 在這里您可以找到更多指定的文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM