Stworzenie klasy, która zachowywać się jak lista bez używania żadnych struktur danych jak listy, tablice itp.

0

Cześć

Od razu na wstępie zaznaczam, że jestem początkujący stąd moje pytanie :) uprzednio przejrzałem sporo stron na google, ale nie znalazłem odpowiedzi.

Mam zadanie, w którym między innymi muszę stworzyć klasę, która będzie de facto listą i będzie miała takie komendy jak .add(Object o), .get(i) ,.size() i .remove(Object o) (potrzebne do wykonania zadania).
I tutaj jest mój problem. Przekopałem trochę tych stron i w większości przypadków, nawet na stronie Oracle, używa się tablic. A ja nie mam używać nic.
Znalazłem przykład (o dziwo na polskiej stronie) z użyciem Node, tutaj link: https://javastart.pl/baza-wiedzy/algorytmy/jednokierunkowa-lista-wiazan, ale problem jest taki, że po zaimplementowaniu metod z biblioteki nie mam takich metod jak .getNext() i .setNext() tylko .getNextSibling() , gdzie musi być w nawiasie Node i .setNodeValue(), gdzie w nawiasie musi być String.

Jak inaczej mogę stworzyć taką klasę? Albo co muszę zrobić i jak napisać z Node'ami?

Będę bardzo wdzięczny za pomoc!

1

Robiłem kiedyś bardzo podobne zadanie i polecam Ci "przestudiować" tę stronę : https://www.geeksforgeeks.org/implementing-a-linked-list-in-java-using-class/

0

@kilroy:

ale problem jest taki, że po zaimplementowaniu metod z biblioteki nie mam takich metod jak .getNext() i .setNext() tylko .getNextSibling() , gdzie musi być w nawiasie Node i .setNodeValue()

Te metody musisz sam zaimplementować; użyj kompozycji, "under the hood" będzie, linked list, i na niej będą operować metody prywatne; a w publicznym "interfejsie" wystawisz, add, get, i whatever, pracujące na wewnętrznej strukturze i metodach.
W internecie jest tyle info na ten temat, że to się napisze samo:)

0

@Maciek G: Dzięki wielkie! Miałem tą stronkę, ale się nie wgłębiałem aż tak, bo jak zobaczyłem pobieżnie to byłem pewien, że to jest zbyt skomplikowane i to nie będzie to. Ale dokładnie przestudiowałem, poprzerabiałem, część metod swoich dodałem i działa tak jak powinno :)

0

Pomysl, jakie informacje musisz trzymac w swojej klasie Node, aby byc w stanie wykonac te operacje. Odnosnie samej listy, to mozesz zrobic tak:

public class MyList {
   private Node head;
   private int size;

   // konstruktor
   // metody 
0

hmm

private class Node {
  Item item;
  Node next;
}

znalazłem na 154 stronie Algorytmów (wydanie 4) - R.Sadgewick, K. Wayne

to chyba dobry start

0

@lion137: no, ale wtedy tak czy siak używam listy, a właśnie chodzi o to, aby całkowicie tego nie używać. Koniec końców zrobiłem to na Node'ach wspomagając się tą stronką co znalazłem i też zalinkował Maciek. No chyba, że jest inny też sposób to bardzo jestem ciekawy

0

No chyba, że jest inny też sposób to bardzo jestem ciekawy

Nie no z grubsza to masz linked-listy (node'y z value i referencja next) oraz array-listy. Ale ze z tablic nie mozesz korzystac no to drugie odpada

1

To w ogole wyglada na jakis XY problem. Jaka jest pelna tresc zadania? Co masz zrobic? Zaimplementowac wlasna liste bez uzycia tablicy? Jakie dokladnie operacje ma umozliwiac?

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