Queue+Stack
parent
fe6626297f
commit
2028acb069
|
@ -0,0 +1,67 @@
|
|||
public class Queue<T>
|
||||
{
|
||||
/**
|
||||
* erster Eintrag der Liste
|
||||
*/
|
||||
public Node<T> first;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
*/
|
||||
public Queue() {}
|
||||
|
||||
/**
|
||||
* Überprüft, ob die Liste leer ist
|
||||
*
|
||||
* @return true, wenn keine Elemente in der Liste
|
||||
*/
|
||||
public boolean isEmpty() {
|
||||
return first == null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fügt ein neues Element am Ende der Liste ein
|
||||
*/
|
||||
public void enqueue(T neu) {
|
||||
Node n = new Node<T>(neu); // Neue Node mit Wert "neu" anlegen
|
||||
|
||||
// Überprüfe, ob Liste leer
|
||||
if (first == null) {
|
||||
// setze neue Node als ersten Eintrag
|
||||
first = n;
|
||||
} else {
|
||||
Node<T> current = first;
|
||||
|
||||
// gehe zum letzten Eintrag
|
||||
while (current.next != null) {
|
||||
current = current.next;
|
||||
}
|
||||
|
||||
// current ist jetzt der letzte Eintrag
|
||||
// setze neue Node als Nachfolger von bisher letzem Eintrag
|
||||
current.setNext(n);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Löscht das Element an der ersten Stelle und gibt
|
||||
* dessen Wert zurück
|
||||
*/
|
||||
public T dequeue() {
|
||||
if (first == null) return null;
|
||||
|
||||
T wert = first.wert;
|
||||
|
||||
first = first.next;
|
||||
|
||||
return wert;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt das Element an der ersten Stelle zurück, oder null
|
||||
*/
|
||||
public T front() {
|
||||
if (first == null) return null;
|
||||
return first.wert;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
public class Stack<T>
|
||||
{
|
||||
/**
|
||||
* erster Eintrag der Liste
|
||||
*/
|
||||
public Node<T> first;
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
*/
|
||||
public Stack() {}
|
||||
|
||||
/**
|
||||
* Überprüft, ob die Liste leer ist
|
||||
*
|
||||
* @return true, wenn keine Elemente in der Liste
|
||||
*/
|
||||
public boolean isEmpty() {
|
||||
return first == null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fügt ein neues Element am Anfang der Liste ein
|
||||
*/
|
||||
public void push(T neu) {
|
||||
Node n = new Node<T>(neu); // Neue Node mit Wert "neu" anlegen
|
||||
n.next = first;
|
||||
first = n;
|
||||
}
|
||||
|
||||
/**
|
||||
* Löscht das Element an der ersten Stelle und gibt
|
||||
* dessen Wert zurück
|
||||
*/
|
||||
public T pop() {
|
||||
if (first == null) return null;
|
||||
|
||||
T wert = first.wert;
|
||||
|
||||
first = first.next;
|
||||
|
||||
return wert;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt das Element an der ersten Stelle zurück, oder null
|
||||
*/
|
||||
public T top() {
|
||||
if (first == null) return null;
|
||||
return first.wert;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue