verkettete lineare Liste

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
bin gerade dabei, eine klasse zu schreiben, die eine verkettete lineare liste von objekten darstellt. das interface habe ich vorgegeben:


Code:
public interface List {
 
   public void addFirst(Object o);
 
   public void add(Object o);
 
   
   public void clear();
 
   public boolean contains(Object o);
 
   
   public Object getFirst();
 
   
   public boolean isEmpty();
 
   public int size();
 
   
   public Object[] toArray();
 
   
   public boolean remove(Object o);
 
}

jetzt hab ich nur das problem, dass mir beim testen:

333
---------
Exception in thread "main" java.lang.NullPointerException
at LinkedList.add(LinkedList.java:31)
at Test.TestAdd(test.java:11)
at Test.main(Test.java:83)

ausgegeben wird...

Code:
public class LinkedList implements List {
 

   protected class ListNode {
 
      
      protected Object value = null;
 
      
      protected ListNode next = null;
    }
 
      protected ListNode head = null;
 
   // Methoden ...
   
   public void addFirst(Object o){
	   ListNode newNode = new ListNode();
	      newNode.value = o;
	      newNode.next  = head;
	      head = newNode;
   }
   
   public void add(Object o){
	    ListNode newNode = new ListNode();
		newNode.value = o;
		newNode.next = null;
		ListNode node = head;
		while (node.next != null) {
			node = node.next;
		}
		node.next = newNode;
   }
   
   public void clear(){
	   head = null;
   }
   
   public boolean contains(Object o){
	     ListNode node = head;
	      while (node != null) {
	         if (node.value.equals(o)) return true;
	         node = node.next;
	      }
	      return false;    // Ende der Liste erreicht, nicht gefunden
   }
   
   public Object getFirst(){
	   return head;
   }
   
   public boolean isEmpty(){
	   return head == null;
   }
   
   public int size(){
	   int length = 0;
	   ListNode node = head;
		while (node != null) {
			node = node.next;
			length = length + 1;
		}
	   return length;
   }
   
   public Object[] toArray(){
	   Object[] feld = new Object[size()];
		ListNode node = head;
		for (int i = 0; i < feld.length; i++) {
			feld[i] = node.value;
			node=node.next;
		}
		return feld;
   }
 
   public boolean remove(Object o){
	   ListNode node = head;
	   
	   if (node.value.equals(o)){
	     head = node.next;   
	   }
	   else{
	      while (node != null) {
	         if (node.next.value.equals(o)){
	        	 node.next = node.next.next; 
	        	 return true;
	         }
	         node = node.next;
	      }
	      return false;
	   }
	   return false;
   }
 
   public void Print(){
	    ListNode node = head;
		while (node != null) {
			System.out.println(node.value);
			node = node.next;
		}  
   }
   
   public void PrintElement(Object o){
	    ListNode node = head;
		System.out.println(node.value);
  }
 public String toString() {
      StringBuilder sb = new StringBuilder("Liste: < ");
      for (ListNode node = head; node != null; node = node.next) {
         sb.append(node.value).append(" ");
      }
      sb.append(">");
      return sb.toString();
   }
}

Code:
public class Test {
	
      public static void TestaddFirst(){
           LinkedList test = new LinkedList();
      	   test.addFirst("333");
	   test.Print();
        }

	public static void TestAdd(){
	   LinkedList test = new LinkedList();
	   test.add("777");
	   test.add("222");
	   test.add("111");
	   test.Print();
	}
	public static void Testclear(){
           LinkedList test = new LinkedList();
           test.addFirst("777");
           test.add("222");
           test.add("111");
           test.clear();
           test.Print();
        }	
	public static void Testcontains(){
           LinkedList test = new LinkedList();
           test.addFirst("777");
           test.add("222");
           test.add("111");
           test.add("888");
           test.add("666");
           test.add("444");
              	
           if (test.contains("222"))
        	   System.out.println("enthaelt '222'");
           else
        	   System.out.println("enthaelt '222' nicht");
           
           if (test.contains("555"))
        	   System.out.println("enthaelt '555'");
           else
        	   System.out.println("enthaelt '555' nicht");
        }
        public static void TestgetFirst(){
            LinkedList test = new LinkedList();
            test.addFirst("777");
            test.add("222");
            test.add("111");
            test.add("888");
            test.PrintElement(test.getFirst());
        }
        public static void TestisEmpty(){
             LinkedList test = new LinkedList();
             test.addFirst("777");
             test.add("222");
             test.add("111");
             test.add("888");
             if (test.isEmpty())
		    System.out.println("leer");
	     else
		    System.out.println("nicht leer");
        }
        public static void Testsize(){
            LinkedList test = new LinkedList();     
            test.addFirst("777");
    	    test.add("222");
    	    test.add("111");
            System.out.println(test.size());

        }
	public static void TestRemove(){
		LinkedList test = new LinkedList();
		test.addFirst("777");
		test.add("222");
		test.add("111");
		test.Print();
		test.remove("111");
		System.out.println("after remove");
		test.Print();
	}
        public static void main(String[] args) {
             TestaddFirst();
             System.out.println("--------");
             TestAdd();
             System.out.println("--------");
             Testclear();
             System.out.println("--------");
             Testcontains();
             System.out.println("--------");
             TestgetFirst();
             System.out.println("--------");
             TestisEmpty();
             System.out.println("--------");
             Testsize();
             System.out.println("--------");
        
	}

}
 
S

SlaterB

Gast
head ist wahrscheinlich null, einfach zu testen mit
System.out.println("head ist: "+head);
am Anfang der Operation add()
 
B

Beni

Gast
Code:
   public void add(Object o){
       ListNode newNode = new ListNode();
      newNode.value = o;
      newNode.next = null;
      ListNode node = head;
      while (node.next != null) {
         node = node.next;
      }
      node.next = newNode;
   }
"head" ist null -> node ist null -> node.next wirft eine Exception. Du musst den Spezialfall prüfen, dass die Liste leer ist.

[Edit: zu spät, SlaterB die Rennschnecke gewinnt]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Was könnten typische Prüfungsaufgaben zum Thema lineare, verkettete Listen sein? Java Basics - Anfänger-Themen 5
M Verkettete Liste Java Basics - Anfänger-Themen 1
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
R Rückgabe: verkettete Liste Java Basics - Anfänger-Themen 2
R einfach verkettete Liste Java Basics - Anfänger-Themen 1
R einfach verkettete Liste Java Basics - Anfänger-Themen 12
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
V einfach verkettete Listen Java Basics - Anfänger-Themen 10
D Doppelt Verkettete Zirkular-Liste Java Basics - Anfänger-Themen 1
A Verkettete Liste Java Basics - Anfänger-Themen 2
B Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 8
L verkettete Liste Java Basics - Anfänger-Themen 15
scratchy1 doppelt verkettete Liste testen Java Basics - Anfänger-Themen 8
R Methoden Entferne alle identische Knoten (Typ String) aus verkettete Liste Java Basics - Anfänger-Themen 8
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
H Verkettete Liste Java Basics - Anfänger-Themen 7
N Verkettete liste rückwärts ausgeben Java Basics - Anfänger-Themen 18
K Verkettete Liste und seine Methoden Java Basics - Anfänger-Themen 1
N Verkettete Liste implementieren Java Basics - Anfänger-Themen 5
O Einfach verkettete Liste - Revert Methode Java Basics - Anfänger-Themen 1
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
S Einfach verkettete Liste Element an bestimmter Position einfügen Java Basics - Anfänger-Themen 24
B Doppelt Verkettete Liste - Ist alles gut so? Java Basics - Anfänger-Themen 3
C Verkettete Liste - sortiert einfügen Java Basics - Anfänger-Themen 7
R Erste Schritte Verkettete Liste will einfach nicht in meinen Schädel Java Basics - Anfänger-Themen 11
B in einem abstrakten Set ,Elemente einer einfache verkettete List epeichern Java Basics - Anfänger-Themen 13
U Datentypen Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 13
J Methoden Doppelt verkettete Liste remove(Object) Java Basics - Anfänger-Themen 8
B OOP Über eine doppelt verkettete Liste iterieren Java Basics - Anfänger-Themen 4
hooked Verkettete Liste / linked list Java Basics - Anfänger-Themen 2
L Doppelt verkettete Liste Java Basics - Anfänger-Themen 6
J Eine Art verkettete Liste aber mit teils mehr als einem Nachfolger Java Basics - Anfänger-Themen 8
V Verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 3
N verkettete Listen Java Basics - Anfänger-Themen 4
R doppelt verkettete Liste aus Arrays erstellen Java Basics - Anfänger-Themen 1
K Einfach Verkettete Liste - addFirst() Java Basics - Anfänger-Themen 7
M verkettete Listen Java Basics - Anfänger-Themen 1
G 2 Aufgabe rund um eine verkettete Liste Java Basics - Anfänger-Themen 2
O Verkettete Liste Java Basics - Anfänger-Themen 10
E Methoden auf von Methoden erstellte Objekte zugreifen (verkettete Liste) Java Basics - Anfänger-Themen 10
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
S Doppelt verkettete Liste Java Basics - Anfänger-Themen 3
G Doppelt Verkettete Liste Java Basics - Anfänger-Themen 2
V Methoden Verkettete Listen Index eines Elementes ausgeben Java Basics - Anfänger-Themen 10
A Doppelt Verkettete Liste Java Basics - Anfänger-Themen 16
E doppelt verkettete liste Java Basics - Anfänger-Themen 10
V Verkettete Liste. Java Basics - Anfänger-Themen 7
X Einfach Verkettete Liste Java Basics - Anfänger-Themen 16
K Verkettete Liste - Methode entwerfen Java Basics - Anfänger-Themen 14
S Verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 12
B Insertionsort verkettete Liste Java Basics - Anfänger-Themen 4
B Stack in eine verkettete Liste pushen Java Basics - Anfänger-Themen 4
D Collections Verkettete Listen und Fußball... Java Basics - Anfänger-Themen 11
R verkettete liste ansEndeSchieben Java Basics - Anfänger-Themen 13
S Verkettete Listen Java Basics - Anfänger-Themen 10
S Verkettete Listen in Java Java Basics - Anfänger-Themen 11
T Verkettete Liste Java Basics - Anfänger-Themen 14
C Methoden Verkettete listen - next methode Java Basics - Anfänger-Themen 3
I verkettete listen Java Basics - Anfänger-Themen 12
A Klassen Innere Klassen, verkettete Liste Java Basics - Anfänger-Themen 9
B Zweifach-verkettete Liste umkehren Java Basics - Anfänger-Themen 6
X verkettete Liste Java Basics - Anfänger-Themen 13
E Datentypen Doppelt verkettete Liste Java Basics - Anfänger-Themen 10
P Einfügen in doppelt verkettete Liste Java Basics - Anfänger-Themen 7
K verkettete Listen - Klasse Knoten Java Basics - Anfänger-Themen 19
kae verkettete Liste Java Basics - Anfänger-Themen 5
S Queue als doppelt verkettete Liste Java Basics - Anfänger-Themen 2
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
B OOP Verkettete Liste Java Basics - Anfänger-Themen 7
R verkettete liste Java Basics - Anfänger-Themen 5
M Verkettete Liste Java Basics - Anfänger-Themen 4
M verkettete liste Java Basics - Anfänger-Themen 7
N doppelt verkettete liste einfügen Java Basics - Anfänger-Themen 7
K Datentypen Einfach/Doppelt verkettete Liste Java Basics - Anfänger-Themen 4
N einfach verkettete liste fehler Java Basics - Anfänger-Themen 5
N einfach verkettete liste Java Basics - Anfänger-Themen 3
G verkettete Liste - invertieren Java Basics - Anfänger-Themen 2
U Verkettete Listen Java Basics - Anfänger-Themen 13
B OOP Einfach verkettete Liste - rekursive Methoden Java Basics - Anfänger-Themen 1
B verkettete Liste Java Basics - Anfänger-Themen 8
M Probleme mit verkettete Listen Java Basics - Anfänger-Themen 4
S zyklisch verkettete Liste erstellen Java Basics - Anfänger-Themen 3
S einfach verkettete Liste Java Basics - Anfänger-Themen 19
O Stack Implementierung als verkettete Liste Java Basics - Anfänger-Themen 8
W Doppelt verkettete Liste implementieren Java Basics - Anfänger-Themen 2
M verkettete Listen Java Basics - Anfänger-Themen 39
T Einfach verkettete Liste: Wie Elemente löschen? Java Basics - Anfänger-Themen 4
J verkettete Liste Java Basics - Anfänger-Themen 2
T Klasse in Java für doppelt verkettete Listen Java Basics - Anfänger-Themen 4
D Einfach verkettete Liste Java Basics - Anfänger-Themen 20
DasDogma Verkettete Liste - Element löschen Java Basics - Anfänger-Themen 2
H Verkettete Liste Java Basics - Anfänger-Themen 5
M verkettete Liste auslesen Java Basics - Anfänger-Themen 7
K eigene verkettete Liste Java Basics - Anfänger-Themen 4
G Doppelt verkettete, generische Liste Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben