我可以编写自己的LinkedList并将其反转。但是我无法反转默认的java.util.LinkedList
我的问题是如何对java.util.LinkedList
执行以下操作while (CurrentNode != NULL)
{
Node NextNode = CurrentNode.next;
CurrentNode.next = PreviousNode;
/* repeat the process, but have to reset
the PreviousNode and CurrentNode
*/
PreviousNode = CurrentNode;
CurrentNode = NextNode;
}
答案 0 :(得分:3)
Collections.reverse会为你做。
import java.util.Collections;
// in your function
Collections.reverse(list);
关于手动执行此操作,您无法访问java.util.LinkedList的内部表示,因此您无法使用公共接口手动执行此操作。
答案 1 :(得分:1)
与C中的示例不同,其中每个节点都有指向另一个节点的指针,Java LinkedList不会提供指向下一个节点的指针/引用。所有这些都是内部处理的,并从程序员中抽象出来。这似乎是用最少的努力扭转它的唯一方法。
Java Collections内部有一个有效的算法来对列表进行排序,因此您不必担心这些细节。
使用Java集合来操作列表和集合。这是一个简单的代码段
import java.util.LinkedList;
import java.util.List;
import java.util.Collections;
public class Reverse {
public static void main(String[] args) {
List<Integer> myList = new LinkedList<Integer>(){{
add(5);
add(8);
add(3);
add(7);
add(1);
}};
System.out.println(myList);
Collections.reverse(myList);
System.out.println(myList);
}
}