2016-03-28 14 views
0

Ich versuche, eine Methode zu erstellen, die einen Knoten zu einer verknüpften Liste hinzufügen wird, aber bis jetzt nicht erfolgreich war. Hier ist mein Code mit meinem Mitglied Vars:add() - Methode für eine verknüpfte Liste

private Object data; 
private int size = 0; 
private Node head = null; 
private Node tail = null; 

    public void add(Object item){ 
    Node temp = head; 
    if (head != null) { 
     // THIS IS THE PROBLEM SITE 

     while(temp.getNext()!=null){ 
      temp=temp.getNext(); 
     } 
     //set next value equal to item 
     Node ab = (Node) item; // It says this is an invalid cast. How do I get around this?? 
     ab.setNext(ab); 

    } 
    else{ 
     head = new Node(item); 
    } 
    size++; 
} 

Auch hier ist meine Node-Klasse als Referenz:

public class Node { 

// Member variables. 
private Object data; // May be any type you'd like. 
private Node next; 

public Node(Object obj) { 
    this.data = obj; // Record my data! 
    this.next = null; // Set next neighbour to be null. 
} 
// Sets the next neighbouring node equal to nextNode 
public void setNext(Node nextNode){ 
    this.next=nextNode; 
} 
// Sets the item equal to the parameter specified. 
public void setItem(Object newItem){ 
    this.data = newItem; 
} 
// Returns a reference to the next node. 
public Node getNext(){ 
    return this.next; 
} 
// Returns this node ís item. 
public Object getItem() { 
    return this.data; 
} 

Vielen Dank für Ihre Zeit!

+0

Können Sie erklären, was "nicht erfolgreich" bedeutet. Erhalten Sie einen Fehler? – pczeus

+0

Ich glaube, das ist ein Duplikat von http://stackoverflow.com/questions/5797548/c-linked-list-inserting-node-at-the-end –

+0

In der Zukunft sollten Sie die Ausnahme (n) hinzufügen, die Sie erhalten so dass es einfacher ist, das Problem für die anderen zu isolieren/zu verstehen. –

Antwort

7

Sie wollen nicht Ihre item als Knoten werfen, möchten Sie einen neuen Knoten erstellen und den data darin festgelegt, dass die item

diese ersetzen:

Node ab = (Node) item; // It says this is an invalid cast. How do I get around this?? 
ab.setNext(ab); 

von etwas wie folgt:

Node newNode = new Node(); 
newNode.setData(item); 
temp.setNext(newNode);