更改 linkedList 中的元素位置

change element position in linkedList

我知道我们可以通过创建新节点和使用节点引用来更改元素位置。如何在不创建或删除节点的情况下更改元素位置,仅通过使用节点引用?非常感谢!

    public class LinkedList<E extends Comparable<E>> implements Iterable<E>
    {
        private Node head; // reference to the first node
        private int N;     // number of elements stored in the list

        private class Node
        {

            public E item;
            public Node next;

            public Node()
            {
                item = null;  next = null;
            }
            public Node(E e, Node ptr)
            {
                item = e;  next = ptr;
            }
        }

    public boolean Move(E e){
        Node current=head;
        while(current !=null){
            if(e.equals(current.item)){
                System.out.println("True");
                return true;
*****Then how to move this node to the front? Without creating and deleting nodes******
            }
            current=current.next;
        }
        System.out.println("False");
        return false;

你的算法应该是这样的

int count = 1;   // change to 0 if zero-indexed
Node p = null;   // previous
Node n = head;   // current

while(count < k) {
    if(n.next != null) {
        p = n;
        n = n.next;
        count++;
    } else
        break;
}

if(count == k){
    p.next = n.next;
    n.next = head;
    head = n;
}
public void changeOrder(){     
    //keep the pointer to next element of the first
    ListNode current=front.next;
    //make first point to the next element
    first.next=current.next;
    current.next=first;
    first=current;
    //the current one was moved one step back and it points to first.
    //change the position
    current=current.next;
    while(current.next!=null && current.next.next!=null){
        ListNode temp = current.next.next;
        current.next.next=temp.next;
        temp.next=current.next;
        current.next=temp;
        current=temp.next;
    }
}