Muszę zrobić własną klasę reprezentujacą listę jednokierunkową zrobioną z węzłów (ang. linked list). Niestety mam z tym problem, ponieważ gubię się w węzłach :/ Klasa powinna zawierać takie metody:
- tworzenie pustej listy - to mam
- dodawanie elementów na początek listy - to mam
- usuwanie elementów z początku listy - to mam
- wyświetlanie listy -to mam
- wyszukiwanie zadanego elementu na liście - to mam
- kasowanie całej listy -tutaj zaczynają się schody i ciągną się do końca
- dodawanie elementów na koniec listy
- usuwanie wybranego (o konkretnej wartości) elementu z listy
- kasowanie wszystkich elementów z listy, które równają się jakiejś wartości K
- wstawianie nowego elementu do listy tak aby lista ta zawsze była listą uporządkowaną rosnąco
- porównanie dwóch list
- scalenie dwóch list
- wyświetlanie listy od końca (trudne – podpowiedź rekurencja)
Oto co mam
public class Node {
public int val = 0;
public Node next = null;
public Node(Node copy) {
val = copy.val;
next = copy.next;
}
public String toString() {
return "[" + val + "]";
}
public Node(int val) {
this.val = val;
}
public Node(int val, Node next) {
this.val = val;
this.next = next;
}
}
public class List {
public Node first;
public List() {
first = null;
}
public void add(Node n) {
if (first == null)
first = new Node(n);
else {
n.next = first;
first = new Node(n);
}
}
public void show() {
Node temp = first;
while (temp != null) {
System.out.println(temp);
temp = temp.next;
}
}
public void showBackward(Node n) {
if (n == null)
return;
Node head = n;
Node tail = n.next;
showBackward(tail);
System.out.println(head);
}
public void deleteFirst() {
if (first == null)
return;
first = first.next;
}
public Node search(int v) {
Node temp = first;
while (temp != null) {
if (temp.val == v)
return temp;
temp = temp.next;
}
return null;
}
public void delete() {
first = null; //to pewnie jest złe
}
}
Proszę o jakąkolwiek wskazówkę i pomoc. Wiele czytałem i szukałem na angielskojęzycznych stronach, ale wciąż jestem "zagubiony" w węzełkach :(