Java:
import java.util.*;
/*
* Queue - am rechten Ende werden neue Elemente hinzugefügt,
* am linken Ende werden Elemente entnommen
*/
class QueueException extends Exception {
public QueueException() { super(); }
public QueueException(String message) { super(message); }
}
public class GenericQueue <T> {
private int anz = 0, max = 0;
private ArrayList <T> data = null;
public GenericQueue(int max) {
if (max <= 0)
max = 3;
this.max = max;
data = new ArrayList <T> (max);
}
public void queue(T e) throws QueueException {
if (anz < max ) {
if (anz < data.size())
data.set(anz, e); // ersetzt das Element an der angegebenen Position in der Liste durch das angegebene Element
else data.add(e); //hängt das angegebene Element an das Ende dieser Liste an
anz++;
}
else
throw new QueueException("Stack is full!");
}
// ENTFERNEN
public T dequeue() throws QueueException {
if (anz > 0) {// min. ein Element vorhanden werden soll, um den zu löschen
data.remove(0); // entfernt das Element an der angegebenen Position in der Liste
return data.get(anz);
} else
throw new QueueException("Stack is empty!");
}
public String toString() {
String s = "";
for (int k = 0; k < anz; k++)
s = s + data.get(k) + " ";
return s + '\n';
}
public static void main(String[] args) {
// TODO Auto-generated method stub
GenericQueue <Integer> st = new GenericQueue<Integer>(3);
try {
st.queue(new Integer(3)); System.out.println(st);
st.queue(new Integer(4)); System.out.println(st);
st.queue(new Integer(5)); System.out.println(st);
st.dequeue(); System.out.println(st);
st.dequeue(); System.out.println(st);
st.dequeue(); System.out.println(st);
} catch(QueueException e) {
System.out.println(e.getMessage());
}
try {
st.queue(new Integer(3)); System.out.println(st);
st.queue(new Integer(4)); System.out.println(st);
st.queue(new Integer(5)); System.out.println(st);
st.queue(new Integer(6)); System.out.println(st);
} catch(QueueException e) {
System.out.println(e.getMessage());
}
}
}
in Analogie zur vorgegebenen Klasse (ArrayList) soll ich eine Datenstruktur GenericQueue, eine Warteschlange entwerfen.
Das Problem, dass die Elemente können nur links (am Anfang) entfernt werden. Elemente hinzufügen hat bei mir geklappt, aber ENTFERNEN (dequeue) leider …... Hat jemand eine Idee?