Die Initialisierung Einzeln Verkettete Liste Java
Ich versuche, implementieren Sie einen abstrakten Datentyp NumList in der Klasse NumLinkedList als eine einfach verkettete Liste.
public class NumLinkedList implements NumList
{
Node head;
int nItem;
private class Node
{
public Node next;
public double value;
public Node(double i, Node j)
{
value = i;
next = j;
}
}
public NumLinkedList()
{
head = null;
nItem = 0;
}
ist meine Initialisierung, und ich habe Schwierigkeiten mit den folgenden Methoden.
public void print()
{
Node currNode = head;
while(currNode.next != null)
{
currNode = currNode.next;
System.out.println(currNode.value);
}
}
public int size()
{
int size = 0;
Node currNode = head;
while(currNode.next != null)
{
currNode = currNode.next;
size++;
nItem++;
}
return size;
}
public void insert(int i, double value)
{
if( i < 0)
{
System.out.println("Error. out of bounds.");
}
if ( i > size())
{
Node currNode = head;
for(int j = 0; j < i; j++)
{
currNode = currNode.next;
}
currNode.next = new Node(value,null);
}
if ( i <= size())
{
Node currNode = head;
for(int j = 0; j < i-1; j++) //this moves CurrNode to the i-1th node
{
currNode = currNode.next;
}
currNode.next = new Node(value,currNode.next);
}
nItem++;
}
wenn ich mein Test-code,
public static void main (String[] args)
{
NumLinkedList test;
test = new NumLinkedList();
//System.out.println("this is how many initial items the initialized list has");
//System.out.println(test.size());
test.insert(1, 0.1);
System.out.println("have tried to insert value 0.1 @ position 1, that is the first element in list.");
test.print();
System.out.println("tried print(). did it work?");
test.insert(4, -1);
Bekomme ich eine Fehlermeldung in der
test.insert(1, 0.1);
Bezugnahme auf
if ( i > size())
und
while(currNode.next != null)
als ich Fehler beim initialisieren der mein array ADT als gut, ich glaube, dass meine Liste ADT ist auch falsch initialisiert. Es ist schwer zu finden, die richtigen Beispiele auf Google, irgendwelche Referenzen für ADT-Initialisierung?
InformationsquelleAutor user1702633 | 2012-09-27
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein problem ist nicht in der Initialisierung, was in Ordnung ist, aber in den Methoden selbst.
Das problem ist, dass Sie initialisieren Ihre
head
zunull
, aber dann, sowohl inprint
und insize
Sie tuncurrNode = head
, das macht es auchnull
Schleife aufcurrNode.next
. Das werfe einNullPointerException
Recht. Sie müssen gehen, um alle Ihre Methoden und hinzufügen spezieller code für den Grenzfall:Für
print
:Für
size
:Alternativ, können Sie einfach ersetzen Ihre gesamte
size
Methode mit einem einfachenreturn nItem;
- Anweisung.Für
insert
:Nebenbei, in Ihrem
insert
benötigen Sie auch einereturn
in Ihrem erstenif
, und Sie ersetzen müssen, Ihre Dritteif
mit einemelse
.head == null
waren gegeben, Ihre Liste immer leer wäre.head == null
hält direkt nach der Initialisierung, aber nur so lange, wie Sie nicht setzen Sie ihn auf einen anderen Wert auf eine korrekt codiert einzufügen.