Springe zum Inhalt oder Footer
SerloDie freie Lernplattform

Queue und Stack implementieren

Viele objektorientierte Programmiersprachen wie zum Beispiel Java stellen bereits Implementierungen für die Datenstrukturen Queue und Stack zur Verfügung. Dennoch ist es lehrreich, diese Datenstrukturen einmal selbst zu implementieren.

Du brauchst als Grundlage eine Listenstruktur, etwa eine ArrayList. Darauf aufbauend programmierst du dann die Funktionen insert und extract, um Datenelemente hinzuzufügen oder wieder zu entnehmen.

Die Funktion insert fügt ein neues Element hinzu. Die Funktion extract entnimmt das erste Element der Queue bzw. das oberste Element des Stacks.

Zusätzlich ist noch eine Funktion isEmpty sinnvoll, um festzustellen, ob die Queue bzw. der Stack leer ist. Diese Funktion ist bereits in der Oberklasse ArrayList vorhanden.

Queue implementieren

Bei der Queue werden neue Elemente am Ende der ArrayList eingefügt und vom Anfang der ArrayList wieder entnommen.

import java.util.ArrayList;

public class Queue<Type> extends ArrayList<Type>
{
    public void insert(Type x)
    {
        add(x);
    }

    public Type extract()
    {
        if (isEmpty())
            throw new RuntimeException("Queue ist leer");
        return remove(0);
    }
}

Stack implementieren

Beim Stack werden neue Elemente am Ende der ArrayList eingefügt und am Ende auch wieder entnommen. Traditionell werden die Funktionen insert und extract beim Stack auch mit push und pop bezeichnet.

import java.util.ArrayList;

public class Stack<Type> extends ArrayList<Type>
{
    public void insert(Type x)
    {
        add(x);
    }

    public Type extract()
    {
        if (isEmpty())
            throw new RuntimeException("Stack ist leer");
        return remove(size()-1);
    }
    
    // Alias-Name für insert
    public void push(Type x)
    {
        insert(x);
    }
    
    // Alias-Name für extract
    public Type pop()
    {
        return extract();
    }

}

Probiere einmal aus, ob es funktioniert. Schreibe anschließend noch eine Funktion testStack, um auch den Stack noch zu testen.

    public static void main(String[] args)
    {
        testQueue();
    }

Es wird eine Queue erzeugt, die Strings speichert.

public static void testQueue()
    {
        Queue<String> qu=new Queue<String>();
        System.out.println(qu.isEmpty());
        qu.insert("ene");
        System.out.println(qu.isEmpty());
        qu.insert("mene");
        System.out.println(qu.extract());
        qu.insert("muh");
        System.out.println(qu.extract());
        System.out.println(qu.extract());
        System.out.println(qu.isEmpty());
    }

Du hast noch nicht genug vom Thema?

Hier findest du noch weitere passende Inhalte zum Thema:

Artikel


Dieses Werk steht unter der freien Lizenz
CC BY-SA 4.0Was bedeutet das?