Hallo,
habe hier eine Queue Implementierung. Nur das enqueuen funktioniert leider nicht wie es soll.
Code ist unten angehangen. Von meiner Logik müsste doch in der enq Methode eigentlich
[code=Java] public void enq(final T element) {
else {
le.setPreviousListElement(back);
back = le;
}[/code]
statt folgendem stehen.
[code=Java] public void enq(final T element) {
else {
back.setPreviousListElement(le);
back = le;
}[/code]
Denn man muss doch das bisherige back element als vorgänger vom neu hinzugefügten le setzen und dann setzt man noch back auf das neu hinzugefügte le.
Diese Idee löst das Problem leider nicht, daher habe ich unten den kompletten Code mal rangehangen.
Danke für Denkanstöße
[code=Java]package a;
public class Queue<T> implements ADT_Queue<T> {
private class ListElement {
private final T element;
private ListElement previousElement;
public ListElement(final T element) {
this.element = element;
}
public T getElement () {
return element;
}
public ListElement getPreviousElement() {
return previousElement;
}
public void setPreviousListElement(final ListElement previousElement) {
this.previousElement = previousElement;
}
}
private ListElement front;
private ListElement back;
private int size;
public Queue() {
front = back = null;
size = 0;
}
public void enq(final T element) {
final ListElement le = new ListElement(element);
if(empty()) {
front = back = le ;
}
else {
back.setPreviousListElement(le);
back = le;
size++;
}
}
public void deq() {
if(!empty()) {
front = front.getPreviousElement();
size--;
}
if (front == null) {
back = null;
}
}
public T front() {
if(empty()) {
return null;
}
else {
return front.getElement();
}
}
public boolean empty() {
if(size == 0) {
return true;
}
else {
return false;
}
}
public static void main(String [] args) {
Queue<Integer> a = new Queue<Integer>();
a.enq(3);
a.deq();
System.out.println(a.front());
}
}
[/code]