Operacje na stosie

0

Witam,

Mam taki orzech do zgryzienia. Potrzebuję wykonać kilka prostych operacji na stosie, którym będzie lista, powiedzmy, 20 tytułów książek. Mam zarys w głowie jak to zrobić, jednak brakuje mi trochę informacji. Chciałbym to zrealizować poprzez gotową implementację obsługi stosu w Javie. O ile proste zdejmowanie i wkładanie elementów na stos jest dla mnie jasne, to mam problem, jak ogarnąć zagadnienie np. usunięcia któregoś elementu ze środka stosu. Wiadomo, że pop() i push() zdejmie/położy nam element na górze stosu, ale jeśli będę chciał usunąć element ze środka? Czy trzeba utworzyć nowy stos dla tego typu elementów? Czy muszę wykonać tyle operacji pop(), aby dotrzeć do tego elementu, następnie ten element gdzieś wrzucić (np. na nowy stos), a potem tyle push(), aby przywrócić zdjęte uprzednio elementy?

I najważniejsze chyba: czy da się jakoś zindeksować elementy listy, na której będę wykonywać te operacje? To będą linie tekstu wczytane z gotowego pliku.

0

Cała idea stosu jest taka, że jest to struktura danych, w której masz dostęp jedynie do najwyższego elementu. Więc tak, jeśli chcesz się dostać do czegoś ze środka, to musisz zdjąć wszystkie elementy powyżej.

Rozwiązaniem nie jest jednak męczenie tego biednego stosu, lecz wybór odpowiedniej struktury danych (lista z przeskokami? drzewo AWŁ?).

0

Zgadzam się, są na pewno lepsze struktury do wyboru, jednakże ja chciałem poćwiczyć Javę w ten właśnie sposób :) Wiem, że to może brzmieć dziwnie, ale jeśli dobrze to opanuję, to będę miał pewną "namacalność" tej metody i łatwość porównania z innymi. Po prostu w ten sposób łatwiej mi się nauczyć czegoś, na praktycznych przykładach stosowania różnych metod :)

0

Użyj kompozycji. Stwóż swoją klasę MyStrangeStack, która jako jeden z atrybutów będzie posiadała instancję LinkedList. Niech Twoja klasa ma zestaw metod:

  • T pop() Pobierz element z wierzchołka stosu,
  • void push(T item) Wrzuć elemetn na stos,
  • T popAt(int x) Pobierz elemetnt X ze stosu, gdzie pop() i popAt(0) powinny zwrócić ten sam obiekt.

Stosując pod spodem List będziesz miał dostęp do "indeksów" elementów.

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