Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package einkaufskasse;
- /**
- * <p>
- * Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018
- * </p>
- * <p>
- * Generische Klasse Queue<ContentType>
- * </p>
- * <p>
- * Objekte der generischen Klasse Queue (Warteschlange) verwalten beliebige
- * Objekte vom Typ ContentType nach dem First-In-First-Out-Prinzip, d.h., das
- * zuerst abgelegte Objekt wird als erstes wieder entnommen. Alle Methoden haben
- * eine konstante Laufzeit, unabhaengig von der Anzahl der verwalteten Objekte.
- * </p>
- *
- * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule
- * @version Generisch_02 2014-02-21
- */
- public class Queue<ContentType> {
- /* --------- Anfang der privaten inneren Klasse -------------- */
- private class QueueNode {
- private ContentType content = null;
- private QueueNode nextNode = null;
- /**
- * Ein neues Objekt vom Typ QueueNode<ContentType> wird erschaffen.
- * Der Inhalt wird per Parameter gesetzt. Der Verweis ist leer.
- *
- * @param pContent das Inhaltselement des Knotens vom Typ ContentType
- */
- public QueueNode(ContentType pContent) {
- content = pContent;
- nextNode = null;
- }
- /**
- * Der Verweis wird auf das Objekt, das als Parameter uebergeben wird,
- * gesetzt.
- *
- * @param pNext der Nachfolger des Knotens
- */
- public void setNext(QueueNode pNext) {
- nextNode = pNext;
- }
- /**
- * Liefert das naechste Element des aktuellen Knotens.
- *
- * @return das Objekt vom Typ QueueNode, auf das der aktuelle Verweis zeigt
- */
- public QueueNode getNext() {
- return nextNode;
- }
- /**
- * Liefert das Inhaltsobjekt des Knotens vom Typ ContentType.
- *
- * @return das Inhaltsobjekt des Knotens
- */
- public ContentType getContent() {
- return content;
- }
- }
- /* ----------- Ende der privaten inneren Klasse -------------- */
- private QueueNode head;
- private QueueNode tail;
- /**
- * Eine leere Schlange wird erzeugt.
- * Objekte, die in dieser Schlange verwaltet werden, muessen vom Typ
- * ContentType sein.
- */
- public Queue() {
- head = null;
- tail = null;
- }
- /**
- * Die Anfrage liefert den Wert true, wenn die Schlange keine Objekte enthaelt,
- * sonst liefert sie den Wert false.
- *
- * @return true, falls die Schlange leer ist, sonst false
- */
- public boolean isEmpty() {
- return head == null;
- }
- /**
- * Das Objekt pContentType wird an die Schlange angehaengt.
- * Falls pContentType gleich null ist, bleibt die Schlange unveraendert.
- *
- * @param pContent
- * das anzuhaengende Objekt vom Typ ContentType
- */
- public void enqueue(ContentType pContent) {
- if (pContent != null) {
- QueueNode newNode = new QueueNode(pContent);
- if (this.isEmpty()) {
- head = newNode;
- tail = newNode;
- } else {
- tail.setNext(newNode);
- tail = newNode;
- }
- }
- }
- /**
- * Das erste Objekt wird aus der Schlange entfernt.
- * Falls die Schlange leer ist, wird sie nicht veraendert.
- */
- public void dequeue() {
- if (!this.isEmpty()) {
- head = head.getNext();
- if (this.isEmpty()) {
- head = null;
- tail = null;
- }
- }
- }
- /**
- * Die Anfrage liefert das erste Objekt der Schlange.
- * Die Schlange bleibt unveraendert.
- * Falls die Schlange leer ist, wird null zurueckgegeben.
- *
- * @return das erste Objekt der Schlange vom Typ ContentType oder null,
- * falls die Schlange leer ist
- */
- public ContentType front() {
- if (this.isEmpty()) {
- return null;
- } else {
- return head.getContent();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement