M
mar
Gast
guten abend.
aufgabe ist das enqueue/dequeue prinzip mit hilfe einer einfach verketteten liste umzusetzen.
vorgegebener code:
hier mein versuch mit jener liste.
newListElem enthält den von eclipse erzeugten konstruktor, sprich die zuweisungen this.nf = nf und this.wert = wert.
ich konnte das programm selbst noch nicht testen.
ich bin einfach noch verunsicherheit über die funktionsweise dieser listen. enthält bspw. newCurrent nach der zuweisung in remove(int count); den letzten wert der warteschlange? zeigt newListElem.nf nach der prüfung auf != null auf die nächste nicht belegte speicherzelle (null)?
aufgabe ist das enqueue/dequeue prinzip mit hilfe einer einfach verketteten liste umzusetzen.
vorgegebener code:
Code:
public void enqueue(int e) throws IllegalStateException {
if ( count >= SIZE ) throw new IllegalStateException("full");
a[upper] = e;
upper = (upper+1)%SIZE; ;
count++;
}
Code:
public int dequeue() throws IllegalStateException {
if ( count <= 0 ) throw new IllegalStateException("empty");
int res = a[lower];
lower = (lower+1)%SIZE; ;
count--;
return res;
}
hier mein versuch mit jener liste.
newListElem enthält den von eclipse erzeugten konstruktor, sprich die zuweisungen this.nf = nf und this.wert = wert.
ich konnte das programm selbst noch nicht testen.
ich bin einfach noch verunsicherheit über die funktionsweise dieser listen. enthält bspw. newCurrent nach der zuweisung in remove(int count); den letzten wert der warteschlange? zeigt newListElem.nf nach der prüfung auf != null auf die nächste nicht belegte speicherzelle (null)?
Code:
public void add()
{
while (newListElem.nf != null)
{
count++;
newListElem = newListElem.nf;
}
count = (count + 1) % SIZE; ;
}
public ListElem remove(int count)
{
if (newListElem.nf != null)
{
count--;
newCurrent = newListElem.nf;
}
count = (count + 1) % SIZE; ;
return newCurrent;
}
public void enqueue(int e) throws IllegalStateException
{
if (count >= SIZE)
throw new IllegalStateException("full");
if (first == null)
first = newListElem;
newListElem.wert = e;
add();
}
public int dequeue() throws IllegalStateException {
if (count <= 0) throw new IllegalStateException("empty");
remove(count);
int res = newCurrent.wert;
return res;
}