Java Code for Queue and Stack Data Structures

Queue Class

First, we import the ArrayList class:

import java.util.ArrayList;

This is the Cola (Queue) class, which extends ArrayList:

public class Cola extends ArrayList {
    public void encolar(Object dato) {
        if (dato != null) {
            if (!esLlena())
                this.add(dato);
            else
                System.out.println("La cola esta llena.");
        } else {
            System.out.println("Introduzca un dato no nulo");
        }
    }

    public void encolar(int pos, Object dato) {
        if (dato != null) {
            if (!esLlena())
                this.add(pos, dato);
            else
                System.out.println("La cola esta llena.");
        } else {
            System.out.println("Introduzca un dato no nulo");
        }
    }

    public void eliminar(int indice) {
        this.remove(indice);
    }

    public boolean esLlena() {
        return this.size() == 13;
    }

    public void desencolar() {
        if (this.size() > 0) {
            this.remove(0);
        }
    }

    public Object getPosicion(int pos) {
        return this.get(pos);
    }

    public Object frente() {
        Object datoAuxiliar = null;
        if (this.size() > 0) {
            datoAuxiliar = this.get(0);
        }
        return datoAuxiliar;
    }

    public boolean vacia() {
        return this.isEmpty();
    }

    public void enlistar() {
        for (int i = 0; i < this.size(); i++) {
            System.out.println(this.get(i));
        }
    }
}

Stack Class

This is the Pila (Stack) class, which also extends ArrayList:

import java.util.ArrayList;

public class Pila extends ArrayList {
    public void apilar(Object dato) {
        if (dato != null) {
            if (!esLlena()) {
                this.add(dato);
            } else {
                System.out.println("La pila esta llena.");
            }
        } else {
            System.out.println("Introduzca un dato no nulo");
        }
    }

    public void eliminar(int indice) {
        this.remove(indice);
    }

    public boolean esLlena() {
        return this.size() == 12;
    }

    public void desapilar() {
        if (size() > 0) {
            this.remove(this.size() - 1);
        }
    }

    public Object cima() {
        Object datoAuxiliar = null;
        if (this.size() > 0) {
            datoAuxiliar = this.get(this.size() - 1);
        }
        return datoAuxiliar;
    }

    public boolean vacia() {
        return this.isEmpty();
    }

    public void enlistar() {
        for (int i = 0; i < this.size(); i++) {
            System.out.println(this.get(i));
        }
    }
}

Test Class

Finally, the Test class to demonstrate the functionality:

import java.io.*;

public class Test {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        Cola cola = new Cola();
        Pila dentistas = new Pila();
        Pila medicos = new Pila();

        cola.encolar("Jose");
        cola.encolar("Mariana");
        cola.encolar("Luisa");
        cola.encolar("Olga");
        cola.encolar("Manuel");
        cola.encolar("Fabiola");
        cola.encolar("Andrea");
        cola.encolar("Paola");
        cola.encolar("Tomas");
        cola.encolar("Arturo");
        cola.encolar("Pilar");
        cola.encolar("Ines");

        for (int i = 0; i < 12; i++) {
            System.out.println("\u000c");
            System.out.println(cola.getPosicion(i) + ", ¿Qué especialista necesitas?");
            System.out.println("1.- Dentista");
            System.out.println("2.- Médico");
            int id = Integer.parseInt(in.readLine());
            while (id < 1 || id > 2) {
                System.out.println("Error. El número ingresado no es correcto");
                id = Integer.parseInt(in.readLine());
            }
            if (id == 1) {
                dentistas.apilar(cola.get(i));
            } else if (id == 2) {
                medicos.apilar(cola.get(i));
            }
        }

        System.out.println("Personas que irán al Dentista:");
        dentistas.enlistar();
        System.out.println("");
        System.out.println("-----");
        System.out.println("");
        System.out.println("Personas que irán al Médico:");
        medicos.enlistar();
    }
}