Cześć. Zrobiłem listę dwukierunkową i chciałem się zapytać, czy metody addFirst i addLast są dobrze napisane.
public class DoubleLinkedList<T> {
class Node<T> {
private T value;
private Node<T> next;
private Node<T> previous;
public Node() {
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
public Node<T> getNext() {
return next;
}
public void setNext(Node<T> next) {
this.next = next;
}
public Node<T> getPrevious() {
return previous;
}
public void setPrevious(Node<T> previous) {
this.previous = previous;
}
}
private Node<T> head;
private Node<T> tail;
private int size;
public DoubleLinkedList() {
head = new Node<>();
tail = new Node<>();
head.setNext(tail);
tail.setPrevious(head);
}
public void addFirst(T val) {
Node<T> node = new Node<>();
node.setValue(val);
node.setNext(head.getNext());
node.setPrevious(head);
head.getNext().setPrevious(node);
head.setNext(node);
size++;
}
public void addLast(T val) {
Node<T> node = new Node<>();
node.setValue(val);
node.setPrevious(tail.getPrevious());
node.setNext(tail);
tail.getPrevious().setNext(node);
tail.setPrevious(node);
size++;
}
public void displayForward() {
Node<T> node = head.getNext();
while (node.getNext() != null) {
System.out.print(node.getValue() + " ");
node = node.getNext();
}
}
public void displayBackward() {
Node<T> node = tail.getPrevious();
while (node.getPrevious() != null) {
System.out.print(node.getValue() + " ");
node = node.getPrevious();
}
}
public static void main(String[] args) {
DoubleLinkedList<Integer> dll = new DoubleLinkedList<>();
dll.addFirst(1);
dll.addFirst(2);
dll.addLast(3);
dll.displayForward();
System.out.println();
dll.displayBackward();
}
}