Hallo Leute
Ich versuche nun schon seit längerer Zeit, mittels ArrayList eine Queue zu implementieren. Um einen neuen Wert zu speichern habe ich den Befehl .add(position, Wert) verwendet. Die Werte sollten also an einem bestimmten Ort gespeichert werden. Wenn ich nun beispielsweise drei Werte an den Orten 0-2 speichere und anschliessend den Wert auf 0 wieder lösche, sind die beiden verbleibenden Werte plötzlich auf 0 und 1 statt auf 1 und 2 gespeichert. Was mache ich wohl falsch?
Vielen Dank
Hier noch der Code:
Ich versuche nun schon seit längerer Zeit, mittels ArrayList eine Queue zu implementieren. Um einen neuen Wert zu speichern habe ich den Befehl .add(position, Wert) verwendet. Die Werte sollten also an einem bestimmten Ort gespeichert werden. Wenn ich nun beispielsweise drei Werte an den Orten 0-2 speichere und anschliessend den Wert auf 0 wieder lösche, sind die beiden verbleibenden Werte plötzlich auf 0 und 1 statt auf 1 und 2 gespeichert. Was mache ich wohl falsch?
Vielen Dank
Hier noch der Code:
Java:
import java.util.ArrayList;
public class Queue1
{
private int size;
private int head=0; //Anfang
private int tail=0; //Ende
private ArrayList <String> queue;
public Queue1(int s)
{
queue = new ArrayList <String>();
size = s;
}
public Queue1()
{
queue = new ArrayList <String>();
size = 3;
}
public void enqueue(String o)
{
if (queue.size()<size)
{
queue.add(tail, o);
tail++;
if(tail == size)
{
tail = 0;
}
}
else
{
System.out.println("Es hat keinen Platz mehr in der Queue!");
}
// Fügt x am Ende in die Warteschlange ein,
// falls die Warteschlange nicht voll ist;
}
public String dequeue()
{
int a;
if (!queue.isEmpty())
{
a = head;
head ++;
if (head > size)
{
head = 0;
}
return (queue.remove(a));
}
else
{
return ("Queue ist leer!");
}
// Entfernt das erste Element aus der Warteschlange,
// falls die Warteschlange nicht leer ist;
}
public boolean isEmpty()
{
return(queue.isEmpty());
//liefert true genau dann, wenn die Warteschlange kein Element enthält
}
public boolean isFull()
{
return(queue.size() == size);
//liefert true genau dann, wenn die Warteschlange voll ist
}
public void clear()
{
queue.clear();
head = 0;
tail = 0;
}
Zuletzt bearbeitet: