Lista jednokierunkowa - własna klasa

0

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:

  1. tworzenie pustej listy - to mam
  2. dodawanie elementów na początek listy - to mam
  3. usuwanie elementów z początku listy - to mam
  4. wyświetlanie listy -to mam
  5. wyszukiwanie zadanego elementu na liście - to mam
  6. kasowanie całej listy -tutaj zaczynają się schody i ciągną się do końca
  7. dodawanie elementów na koniec listy
  8. usuwanie wybranego (o konkretnej wartości) elementu z listy
  9. kasowanie wszystkich elementów z listy, które równają się jakiejś wartości K
  10. wstawianie nowego elementu do listy tak aby lista ta zawsze była listą uporządkowaną rosnąco
  11. porównanie dwóch list
  12. scalenie dwóch list
  13. 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 :(

0

Wg mnie jeśli chcesz programować, to powinieneś to zrobić sam. Robić aż zrobisz. W p.p. grozi Ci, że albo nie będziesz programować, albo zawsze będzie: "A jak zrobić ...?"

Jak Ci bardzo zależy to podpowiem:
ad. 7
Do klasy Node dodaj metody:

public Node getNext(){
   return next;
}

public void setNext(Node n){
    this.next = n;
}

Do klasy List dodaj metodę:

public void appendNode(Node n){
    if (first == null){
        first = n;
    }
    else{
        Node node = first;
        while(node.getNext() != null){
            node = node.getNext();
        }
        node.setNext(n);
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1