Advertisement
Guest User

Aufgabe 2 ÜB6

a guest
Dec 10th, 2016
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.00 KB | None | 0 0
  1. /*
  2.     Aufgabe 2) Listen
  3.  
  4.     In der Klasse IntList haben Sie eine Listenimplementierung gegeben.
  5.     Dazu sollen Sie folgende zusätzliche Methoden implementieren:
  6.  
  7.     - reverseI: (iterativ) Dreht die Liste um. Die Methode muss iterativ
  8.                 implementiert werden. Bei dieser Methode werden keine (!) neuen
  9.                 Knoten erzeugt und die Werte (elem-Felder) der Knoten dürfen
  10.                 nicht überschrieben werden. Die Umkehrung der Liste wird nur
  11.                 durch die Neuverkettung der vorhandenen Knoten erreicht!
  12.  
  13.     - reverseR: (rekursiv) Dreht die Liste um. Die Methode muss rekursiv
  14.                 implementiert werden. Die eigentliche Rekursion sollte in der
  15.                 Klasse ListNode durchgeführt werden. Bei dieser Methode werden
  16.                 keine (!) neuen Knoten erzeugt und die Werte der Knoten dürfen
  17.                 nicht überschrieben werden. Die Umkehrung der Liste wird nur
  18.                 durch die Neuverkettung der vorhandenen Knoten erreicht!
  19.                
  20.     - insertIdx:(iterativ) Fügt einen Knoten entsprechend dem übergebenen
  21.                 Index ein. Das Head-Element hat den Index 1. Hängen Sie an
  22.                 entsprechender Stelle die Liste so um, damit diese nach
  23.                 Einfügen wieder eine korrekte Verkettung aufweist. Ist der Index
  24.                 größer als die Länge der Liste wird false zurückgegeben.
  25.                 Bei erfolgreichem Einfügen wird true retourniert.
  26.                
  27.     - remove:   (iterativ) Entfernt aus der Liste alle Knoten mit dem
  28.                 übergebenen Wert (elem), falls Knoten mit diesem Element
  29.                 vorhanden sind. Bei erfolgreichem Entfernen wird true
  30.                 zurückgegeben, ansonsten false.
  31.  
  32.     Zusatzfragen:
  33.     1. Wie entsteht die Ausgabe beim Aufruf der Methode
  34.        System.out.println(list);
  35.     2. Warum ist es sinnvoll beim Iterieren durch Listen sich eine Kopie des
  36.        Zeigers auf den "head"-Knoten zu erstellen?
  37.     3. Erläutern Sie die Vor- und Nachteile von Listen gegenüber Arrays.
  38. */
  39. class IntList {
  40.    
  41.     private class ListNode {      
  42.         int elem;                
  43.         ListNode next = null;    
  44.        
  45.         ListNode(int elem, ListNode next) {  
  46.             this.elem = elem;
  47.             this.next = next;
  48.         }
  49.        
  50.         int getElem() {
  51.             return this.elem;
  52.         }
  53.        
  54.         ListNode getNext() {
  55.             return this.next;
  56.         }
  57.        
  58.         void add(int elem) {            
  59.             if (this.next == null) {      
  60.                 this.next = new ListNode(elem, null);  
  61.             } else {
  62.                 this.next.add(elem);        
  63.             }
  64.         }
  65.        
  66.         ListNode reverseR() {
  67.             //TODO Implementieren Sie hier die Angabe
  68.             return null; //diese Anweisung ändern oder löschen.
  69.         }
  70.        
  71.         public String toString() {
  72.             return this.elem + ((this.next == null) ? "-|" : "->" + this.next);  
  73.         }
  74.        
  75.     }
  76.  
  77. private ListNode head = null;
  78.    
  79.     public boolean empty() {
  80.         return this.head == null;
  81.     }
  82.    
  83.     public void add(int elem) {
  84.         if (this.empty()) {
  85.             this.head = new ListNode(elem, null);
  86.         } else {
  87.             this.head.add(elem);
  88.         }
  89.     }
  90.    
  91.     public int first() {
  92.         return this.head.getElem();
  93.     }
  94.    
  95.     public void reverseI() {
  96.  }
  97.  
  98.  
  99.  
  100.     public void reverseR() {
  101.         this.head = this.head.reverseR();
  102.     }
  103.  
  104.  
  105.     public boolean insertIdx(int value, int index) {
  106.         //TODO Implementieren Sie hier die Angabe
  107.         return false; //diese Anweisung ändern oder löschen.
  108.     }
  109.  
  110.  
  111.     public boolean remove(int value) {
  112.         //TODO Implementieren Sie hier die Angabe
  113.         return false; //diese Anweisung ändern oder löschen.
  114.     }
  115.  
  116.  
  117.     public String toString() {
  118.         return "[" + this.head + "]";
  119.     }
  120. }
  121. public class Aufgabe2{
  122.    
  123.     public static void main(String[] args) {
  124.         // Inhalt von "main" wird für die Unittests verwendet!
  125.         IntList myList = new IntList();
  126.         for(int i = 1; i < 6; i++){
  127.             myList.add(i);
  128.         }
  129.         myList.add(25);
  130.         myList.add(15);
  131.         myList.add(1);
  132.         myList.add(5);
  133.         System.out.println(myList);
  134.         myList.reverseI();
  135.         System.out.println(myList);
  136.         /*myList.reverseR();
  137.         System.out.println(myList);
  138.         myList.insertIdx(0,1);
  139.         myList.insertIdx(2,7);
  140.         myList.insertIdx(18,11);
  141.         myList.insertIdx(41,20);
  142.         myList.insertIdx(23,12);
  143.         myList.insertIdx(344,0);
  144.         myList.insertIdx(1,2);
  145.         myList.insertIdx(5,14);
  146.         myList.insertIdx(4,6);
  147.         System.out.println(myList);
  148.         myList.remove(0);
  149.         myList.remove(1);
  150.         myList.remove(7);
  151.         myList.remove(5);
  152.         myList.remove(25);
  153.         myList.remove(4);
  154.         System.out.println(myList);*/
  155.     }
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement