PJF16

Aufgabe 1

Dec 13th, 2015
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.25 KB | None | 0 0
  1. /*******************************************************************************
  2.  
  3.  AUFGABENBLATT 7 - Allgemeine Informationen
  4.  
  5.  Das Projekt Aufgabenblatt7 besteht aus fünf Aufgaben in je einer Klasse, die
  6.  Sie erweitern und in den Übungen vom 14.12. bis 18.12. präsentieren können
  7.  müssen.
  8.  
  9.  Achten Sie bei der Implementierung der Klassen auf folgende Punkte:
  10.  
  11.  - Einige Aufgabenstellungen sind in eine Geschichte eingebettet und auf einer
  12.  höheren Abstraktionsebene beschrieben als in bisherigen Übungen. Rechnen Sie
  13.  daher mit einem höheren Aufwand zum Verstehen der Aufgaben.
  14.  - Ihr Programm sollte kompilierbar und ausführbar sein.
  15.  - Testen und kommentieren Sie Ihre Programme ausführlich.
  16.  - Bei jeder Aufgabe finden Sie Zusatzfragen. Diese Zusatzfragen beziehen sich
  17.  thematisch auf das erstellte Programm. Sie müssen diese Zusatzfragen in der
  18.  Übung beantworten können.
  19.  
  20.  Abgabe: Die Abgabe erfolgt in TUWEL indem Sie bis Montag, den 14.12.2015 um
  21.  06:00 Ihre Kreuzerl des aktuellen Aufgabenblattes eintragen. Nur durch
  22.  Ankreuzen können Sie auch Punkte bekommen. Allerdings müssen Sie angekreuzte
  23.  Aufgaben auch vorzeigen können.
  24.  
  25.  ******************************************************************************/
  26. /*
  27.     Aufgabe1) Char-Stack als einfach verkettete Liste
  28.  
  29.     In Aufgabe1 soll ein Character-Stack mittels einfach-verketteter Liste
  30.     realisiert werden. Der char-Stack wird verwendet um Klammerausdrücke zu
  31.     überprüfen. Für die Realisierung des Stacks werden zwei Klassen benötigt,
  32.     die als separate Files realisiert sind.
  33.  
  34.     CharStackNode: Diese Klasse bildet einen Knoten (ein Element) des Stacks ab.
  35.                    Dieser Knoten (Klasse) besitzt zwei Membervariablen. Die
  36.                    erste Variable speichert den Character und die zweite
  37.                    Variable zeigt auf das nachfolgende Element im Stack (Liste).
  38.                    Methoden der Klasse:
  39.                    - CharStackNode(...,...): Konstruktor der Klasse
  40.                    - getElem(): Gibt das Element (char) des Knotens zurück.
  41.                    - getNext(): Gibt den nächsten Knoten des Stacks (Liste)
  42.                                 zurück.
  43.  
  44.     CharStack: Diese Klasse realisiert den Stack und besitzt eine
  45.                Membervariable. Diese Variable zeigt auf den ersten bzw.
  46.                obersten Knoten (Element) des Stacks. Methoden der Klasse:
  47.                - isEmpty(): Prüft ob der Stack leer ist und gibt einen boolean
  48.                             zurück.
  49.                - push(): Die Methode bekommt einen char übergeben und legt
  50.                          diesen auf dem Stack ab.
  51.                - pop(): Die Methode nimmt das Element (Knoten) vom Stack
  52.                         herunter und gibt den gelesenen Wert (char) zurück.
  53.  
  54.     Aufgabe1: Implementieren Sie in der Klasse "Aufgabe1" eine statische Methode
  55.               "check", die eine Klammersequenz mit runden Klammern () überprüft.
  56.               Das heißt jeder öffnenden Klammer muss eine schließende Klammer
  57.               gegenüber stehen und nach Abarbeitung aller Klammern muss der
  58.               Stack leer sein. Der Methode wird die Klammersequenz als String
  59.               übergeben. Die Methode gibt true zurück falls die Klammerung
  60.               stimmt, ansonsten false.
  61.  
  62.     Zusatzfragen:
  63.     1. Welche Vorteile bieten die Java-Datenstrukturen gegenüber der eigenen
  64.        Implementierung?
  65.  
  66. */
  67. public class Aufgabe1 {
  68.  
  69.     private static boolean check(String sequenz){
  70.         CharStack n = new CharStack ();
  71.         for (int i=0; i<sequenz.length(); i++) {
  72.             n.push(sequenz.charAt(i));
  73.         }
  74.         int z1=0;
  75.         int z2=0;
  76.         while (!n.isEmpty()) {
  77.             if (n.pop()=='(')
  78.                 z1++;
  79.             else
  80.                 z2++;
  81.         }
  82.        
  83.         if (z1==z2)
  84.             return true;
  85.         else
  86.            
  87.         return false;
  88.     }
  89.  
  90.     public static void main(String[] args) {
  91.         String seq_true = "(())()((()))";
  92.         String seq_false = "((())())(";
  93.         System.out.println(check(seq_true));
  94.         System.out.println(check(seq_false));
  95.     }
  96. }
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106. ----------------------------------
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. public class CharStack {
  115.  
  116.     private CharStackNode top = null;
  117.  
  118.     // push an element onto the stack
  119.     public void push(char elem) {
  120.        
  121.         CharStackNode n = new CharStackNode (elem, this.top);
  122.         top = n;
  123.        
  124.     }
  125.  
  126.     // pop an element from the stack
  127.     public char pop() {
  128.         CharStackNode item = top;
  129.         top = top.getNext();
  130.         return item.getElem();
  131.     }
  132.  
  133.     // true if the stack is empty
  134.     public boolean isEmpty() {
  135.         if (top != null)
  136.             return false;
  137.         else
  138.             return true;
  139.     }
  140. }
  141.  
  142.  
  143. ---------------------------
  144.  
  145.  
  146.  
  147. public class CharStackNode {
  148.  
  149.     private char elem;
  150.     private CharStackNode next;
  151.  
  152.     // replace the value and next node
  153.     public CharStackNode(char elem, CharStackNode next) {
  154.        this.elem = elem;
  155.        this.next = next;
  156.     }
  157.  
  158.     // get the value
  159.     public char getElem() {
  160.         return elem;
  161.     }
  162.  
  163.     // get the next node
  164.     public CharStackNode getNext() {
  165.         return next;
  166.     }
  167. }
Advertisement
Add Comment
Please, Sign In to add comment