SHARE
TWEET

QUEUE

a guest Dec 6th, 2019 192 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * <p>
  3.  * Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018
  4.  * </p>
  5.  * <p>
  6.  * Generische Klasse Queue<ContentType>
  7.  * </p>
  8.  * <p>
  9.  * Objekte der generischen Klasse Queue (Warteschlange) verwalten beliebige
  10.  * Objekte vom Typ ContentType nach dem First-In-First-Out-Prinzip, d.h., das
  11.  * zuerst abgelegte Objekt wird als erstes wieder entnommen. Alle Methoden haben
  12.  * eine konstante Laufzeit, unabhaengig von der Anzahl der verwalteten Objekte.
  13.  * </p>
  14.  *
  15.  * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule
  16.  * @version Generisch_02 2014-02-21
  17.  */
  18. public class Queue<ContentType> {
  19.  
  20.   /* --------- Anfang der privaten inneren Klasse -------------- */
  21.  
  22.   private class QueueNode {
  23.  
  24.     private ContentType content = null;
  25.     private QueueNode nextNode = null;
  26.  
  27.     /**
  28.      * Ein neues Objekt vom Typ QueueNode<ContentType> wird erschaffen.
  29.      * Der Inhalt wird per Parameter gesetzt. Der Verweis ist leer.
  30.      *
  31.      * @param pContent das Inhaltselement des Knotens vom Typ ContentType
  32.      */
  33.     public QueueNode(ContentType pContent) {
  34.       content = pContent;
  35.       nextNode = null;
  36.     }
  37.  
  38.     /**
  39.      * Der Verweis wird auf das Objekt, das als Parameter uebergeben wird,
  40.      * gesetzt.
  41.      *
  42.      * @param pNext der Nachfolger des Knotens
  43.      */
  44.     public void setNext(QueueNode pNext) {
  45.       nextNode = pNext;
  46.     }
  47.    
  48.     /**
  49.      * Liefert das naechste Element des aktuellen Knotens.
  50.      *
  51.      * @return das Objekt vom Typ QueueNode, auf das der aktuelle Verweis zeigt
  52.      */
  53.     public QueueNode getNext() {
  54.       return nextNode;
  55.     }
  56.  
  57.     /**
  58.      * Liefert das Inhaltsobjekt des Knotens vom Typ ContentType.
  59.      *
  60.      * @return das Inhaltsobjekt des Knotens
  61.      */
  62.     public ContentType getContent() {
  63.       return content;
  64.     }
  65.    
  66.   }
  67.  
  68.   /* ----------- Ende der privaten inneren Klasse -------------- */
  69.  
  70.   private QueueNode head;    //erster Korb//
  71.   private QueueNode tail;    //alles nach dem ersten Korb//
  72.  
  73.   /**
  74.    * Eine leere Schlange wird erzeugt.
  75.    * Objekte, die in dieser Schlange verwaltet werden, muessen vom Typ
  76.    * ContentType sein.
  77.    */
  78.   public Queue() {
  79.     head = null;
  80.     tail = null;
  81.   }
  82.  
  83.   /**
  84.    * Die Anfrage liefert den Wert true, wenn die Schlange keine Objekte enthaelt,
  85.    * sonst liefert sie den Wert false.
  86.    *
  87.    * @return true, falls die Schlange leer ist, sonst false
  88.    *
  89.    * equivalent zu gibErsten
  90.    */
  91.   public boolean isEmpty() {
  92.     return head == null;
  93.   }
  94.  
  95.   /**
  96.    * Das Objekt pContentType wird an die Schlange angehaengt.
  97.    * Falls pContentType gleich null ist, bleibt die Schlange unveraendert.
  98.    *
  99.    * @param pContent
  100.    *            das anzuhaengende Objekt vom Typ ContentType
  101.    */
  102.   public void enqueue(ContentType pContent) {
  103.     if (pContent != null) {
  104.       QueueNode newNode = new QueueNode(pContent);
  105.       if (this.isEmpty()) {
  106.         head = newNode;
  107.         tail = newNode;
  108.       } else {
  109.         tail.setNext(newNode);
  110.         tail = newNode;
  111.       }
  112.     }
  113.   }
  114.  
  115.   /**
  116.    * Das erste Objekt wird aus der Schlange entfernt.
  117.    * Falls die Schlange leer ist, wird sie nicht veraendert.
  118.    *
  119.    * dequeue() ist das gleiche wie entferneErsten
  120.    */
  121.   public void dequeue() {
  122.     if (!this.isEmpty()) {
  123.       head = head.getNext();
  124.       if (this.isEmpty()) {
  125.         head = null;
  126.         tail = null;
  127.       }
  128.     }
  129.   }
  130.  
  131.   /**
  132.    * Die Anfrage liefert das erste Objekt der Schlange.
  133.    * Die Schlange bleibt unveraendert.
  134.    * Falls die Schlange leer ist, wird null zurueckgegeben.
  135.    *
  136.    * @return das erste Objekt der Schlange vom Typ ContentType oder null,
  137.    *         falls die Schlange leer ist
  138.    *
  139.    *  ContentType front() ist das gleiche wie gibNaechsten
  140.    */
  141.   public ContentType front() {
  142.     if (this.isEmpty()) {
  143.       return null;
  144.     } else {
  145.       return head.getContent();
  146.     }
  147.   }
  148. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top