2010-05-15 8 views
6

Ich möchte die Reihenfolge der Elemente in einer Liste hinzugefügt werden. Also habe ich eine LinkedList in Java verwendet.Swap-Elemente in LinkedList

Jetzt möchte ich zwei Elemente in der verknüpften Liste tauschen können. Zuallererst kann ich keinen elementAt() für LinkedList finden. Außerdem gibt es keine Möglichkeit, Elemente an einer bestimmten Position hinzuzufügen.

Antwort

2

Check-out zu Finden Sie ein Element bei index verwenden Sie get(int index)

Um eine element bei einer bestimmtenzu platzierenVerwenden Sie set(int index, Object element)

0

Werfen Sie einen Blick auf ArrayList, diese Klasse wird sowohl die Reihenfolge beibehalten und O (1) Random Access bereitstellen.

2

Wenn Sie Ihre eigene LinkedList-Klasse für Übung schreiben (z. B. für ein Projekt oder eine Schule), versuchen Sie, zwei temporäre Objektvariablen und zwei Ints zu erstellen, um ihre Position in der Liste zu halten. Verwenden Sie dann add (int, Object), um den ersten in der zweiten Position und den zweiten in der ersten Position hinzuzufügen.

0
public class SwapNode { 

public static Node head; 

public static void main(String[] args) { 
    SwapNode obj = new SwapNode(); 
    obj.insertAtEnd(5); 
    obj.insertAtEnd(6); 
    obj.insertAtEnd(4); 
    obj.insertAtEnd(7); 
    obj.insertAtEnd(3); 
    obj.insertAtEnd(8); 
    obj.insertAtEnd(2); 
    obj.insertAtEnd(9); 
    obj.insertAtEnd(1); 
    obj.print(head); 
    System.out.println("*** Swapped ***"); 
    obj.swapElementValue(4, 2);  
} 

public void swapElementValue(int value1, int value2) { 
    if (value1 == value2) { 
     System.out.println("Values same, so no need to swap"); 
     return; 
    } 
    boolean found1 = false, found2 = false; 
    Node node = head; 
    while (node != null && !(found1 && found2)) { 
     if (node.data == value1) { 
      node.data = value2; 
      found1 = true; 
      node = node.next; 
      continue; 
     } 
     if (node.data == value2) { 
      node.data = value1; 
      found2 = true; 
      node = node.next; 
      continue; 
     } 
     node = node.next; 
    } 
    if (found1 && found2) { 
     print(head); 
    } else { 
     System.out.println("Values not found"); 
    } 
} 

public void insertAtEnd(int data) { 
    Node newNode = new Node(data); 
    if (head == null) { 
     head = newNode; 
     return; 
    } 

    Node temp = head; 
    while (temp.next != null) { 
     temp = temp.next; 
    } 
    temp.next = newNode; 
} 

public void print(Node head) { 
    Node temp = head; 
    while(temp != null) { 
     System.out.print(temp.data); 
     temp = temp.next; 
    } 
    System.out.println(); 
} 


static class Node { 
    private int data; 
    public Node next; 

    public Node(int data) { 
     this.data = data; 
    } 
} 

}