Benutzer-Werkzeuge

Webseiten-Werkzeuge


listen:trennungstrukturdaten:letztesloeschenloesung:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
listen:trennungstrukturdaten:letztesloeschenloesung:start [2024/09/19 07:52] – angelegt Martin Pabstlisten:trennungstrukturdaten:letztesloeschenloesung:start [2024/10/04 06:42] (aktuell) Martin Pabst
Zeile 5: Zeile 5:
  
 <script type="text/plain" title="Hauptprogramm.java"> <script type="text/plain" title="Hauptprogramm.java">
-Supermarktkasse s = new Supermarktkasse(); +Warteschlange w = new Warteschlange();
-s.hintenAnstellen(new Kunde("Max")); +
-s.hintenAnstellen(new Kunde("Tina")); +
-s.hintenAnstellen(new Kunde("Silke")); +
-s.hintenAnstellen(new Kunde("Tim"));+
  
-println(s.gibDenNtenKunden(2).name);+w.hintenAnstellen(new Kunde("Anton"));  
 +w.hintenAnstellen(new Kunde("Berta"));  
 +w.hintenAnstellen(new Kunde("Claudia")); 
  
 +w.löscheLetztesElement();
 +println(w.getSize());
  
-class Supermarktkasse {+println(w.erstenEntnehmen().getName()); 
 +println(w.erstenEntnehmen().getName()); 
 + 
 + 
 + 
 +class Warteschlange { 
 +   
    Knoten anfang;    Knoten anfang;
    Knoten ende;    Knoten ende;
  
-   void hintenAnstellen(Kunde kunde) {+ 
 +   boolean hatKunde(String name) { 
 +      if(anfang == null) return false; 
 +      return anfang.hatKunde(name); 
 +   } 
 + 
 +   int getSize() { 
 +      if(anfang == null) return 0; 
 +       
 +      return anfang.getSizeRekursiv(); 
 +       
 +   } 
 + 
 +   void löscheLetztesElement() { 
 +      if(anfang == null) return; 
 + 
 +      anfang = anfang.löscheLetztenUndGibMeinenNachfolgerZurück(); 
 + 
 +      // Attribut ende neu setzen 
       if(anfang == null) {       if(anfang == null) {
-         anfang = new Knoten(kunde); +         ende = null;
-         ende = anfang;+
          return;          return;
       }       }
  
-      Knoten neuerKnoten new Knoten(kunde); +      ende anfang.getLetztenKnoten(); 
-      ende.setNachfolger(neuerKnoten); +
-      ende = neuerKnoten;+
  
    }    }
  
-   Kunde erstenEntnehmen() { +   /** 
-      Knoten erster = anfang; +    * Für n == 0 wird der erste Kunde zurückgegeben,  
-      anfang = erster.getNachfolger(); +    * für n == 1 der zweite usw. 
-      return erster.getDaten();+    */ 
 +   Kunde gibDenNtenWert(int n) { 
 + 
 +      if(anfang == nullreturn null; 
 + 
 +      return anfang.gibDenNtenWert(n); 
    }    }
 +   
  
-   int getAnzahlIterativ() { +   Kunde erstenEntnehmen() { 
-      if(anfang == null) { +       
-         return 0;+      if(anfang == ende) { 
 +         if(anfang == null) return null; 
 +         ende = null;
       }       }
-  
-      int anzahl = 1; 
-      Knoten aktuellerKnoten = anfang; 
-      while (aktuellerKnoten.getNachfolger() != null) { 
-         aktuellerKnoten = aktuellerKnoten.getNachfolger(); 
-         anzahl++; 
-      } 
-  
-      return anzahl; 
-   } 
  
 +      Knoten alterErsterKnoten = anfang;
  
-   int getAnzahlRekursiv() { +      anfang = anfang.getNachfolger(); 
-      if(anfang == nullreturn 0+ 
-      return anfang.getAnzahl(); + 
-   }+      return alterErsterKnoten.getKunde();
  
-   Kunde gibDenNtenKunden(int n) { 
-      if(n == 0) return anfang.getDaten(); 
-      return anfang.gibDenNtenKunden(n); 
    }    }
  
-   void letztesElementLöschen() { +   void hintenAnstellen(Kunde kunde) {
-      // Liste leer? +
-      if(anfang == null) return; +
  
-      // Liste enthält nur ein Element: +      Knoten neuerKnoten = new Knoten(kunde); 
-      if(anfang.getNachfolger() == null) { + 
-         anfang null+      if(ende == null) { 
-         ende null;+         ende neuerKnoten
 +         anfang neuerKnoten;
          return;          return;
       }       }
 +      
 +      ende.setNachfolger(neuerKnoten);
 +      ende = neuerKnoten;
  
-      // Liste enthält mindestens zwei Elemente: 
-      ende = anfang.letztesElementLöschenUndNeuesLetztesZurückliefern(); 
    }    }
 +
 } }
  
 class Knoten { class Knoten {
-   Knoten nachfolger; +   private Knoten nachfolger; 
-   Kunde daten;+   private Kunde kunde;
  
    Knoten(Kunde kunde) {    Knoten(Kunde kunde) {
-      this.daten = kunde;+      this.kunde = kunde;
    }    }
 +   
 +   boolean hatKunde(String name) {
 +      if(kunde.getName() == name) return true;
  
-   Knoten letztesElementLöschenUndNeuesLetztesZurückliefern() { +      if(nachfolger == null) return false;
-      // Falls der Nachfolger das letzte Element ist: lösche ihn +
-      if(nachfolger.nachfolger == null) +
-         nachfolger = null;      // Der garbage collector erledigt das eigentliche Löschen. +
-         return this; +
-      }+
  
-      return nachfolger.letztesElementLöschenUndNeuesLetztesZurückliefern();+      return nachfolger.hatKunde(name);
  
    }    }
  
-   int getAnzahl() { + 
-      if(nachfolger == null) return 1+   Knoten getLetztenKnoten() { 
-      return nachfolger.getAnzahl() + 1;+       
 +      if(nachfolger == null) return this; 
 + 
 +      return nachfolger.getLetztenKnoten();
    }    }
  
 +   Knoten löscheLetztenUndGibMeinenNachfolgerZurück() {
 +      
 +      if(nachfolger == null) return null;
 +
 +      nachfolger = nachfolger.löscheLetztenUndGibMeinenNachfolgerZurück();
 +
 +      return this;
 +
 +   }
 +
 +   Kunde gibDenNtenWert(int n) {
 +      if(n == 0) return kunde;
 +
 +      if(nachfolger == null) return null;
 +
 +      return nachfolger.gibDenNtenWert(n - 1);
 +   }
 +   
 +   int getSizeRekursiv() {
 +      if(nachfolger == null) return 1;
 +      return nachfolger.getSizeRekursiv() + 1;
 +   }
    Knoten getNachfolger() {    Knoten getNachfolger() {
       return nachfolger;       return nachfolger;
Zeile 111: Zeile 154:
    }    }
  
-   Kunde getDaten() { +   Kunde getKunde() { 
-      return daten; +      return kunde;
-   } +
- +
-   Kunde gibDenNtenKunden(int n) { +
-      if(n == 1) return daten; +
-      if(nachfolger != null) { +
-         return nachfolger.gibDenNtenKunden(n - 1); +
-      } +
- +
-      // Fehler: n ist zu groß! +
-      return null;+
    }    }
 } }
 +
  
 class Kunde { class Kunde {
-   String name; +    
- +   private String name; 
    Kunde(String name) {    Kunde(String name) {
       this.name = name;       this.name = name;
    }    }
 +
 +   String getName() {
 +      return name;
 +   }
 +
 } }
 </script> </script>
listen/trennungstrukturdaten/letztesloeschenloesung/start.1726732374.txt.gz · Zuletzt geändert: 2024/09/19 07:52 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki