Stos - dodawanie elementów

Stos - dodawanie elementów
0

Witam. Temat bardzie na rozumowanie, aniżeli pomoc w kodzie.

Ok, mam napisać implementacje tablicowego stosu ograniczonego. W miarę proste zadanie. Patrze sobie w internecie jakie metody muszą być w takiej implementacji i widzę dziwną rzecz. W większości implementacji jest

Kopiuj
public void Push(T el){

[... kod jak stos jest przepelniony]

else
      stos[rozmiar++] = el;

}

Moje pytanie brzmi czemu kolejne elementy są dokładane na pierwsze indeksy? W moim rozumowaniu powinno być:

Kopiuj
int rozmiar_temp = stos.length-1;
stos[rozmiar_temp--] = el;

, czyli dokładamy od tyłu elementy, a nie od przodu. Czy dobrze rozumiem, że najpierw mamy dostęp do 0,1.. indeksu?

Mam nadzieje, że dobrze nakreśliłem problem.

Pozdrawiam i dziękuję za pomoc,
Ujemny

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

Moje pytanie brzmi czemu kolejne elementy są dokładane na pierwsze indeksy?

Ponieważ tak jest wygodniej.

Kopiuj
push(x)
> stos[0] = x

push(y)
> stos[0] = x
> stos[1] = y

push(z)
> stos[0] = x
> stos[1] = y
> stos[2] = z

foo = pop()
> foo = stos[2]
> stos[0] = x
> stos[1] = y

Nie trzeba się bawić z odejmowaniem, a przy realokowaniu z dodatkowym przemieszczaniem tablicy (musiałbyś przekopiować dane na koniec bloku pamięci, a nie początek = dodatkowe, zbędne obliczenia).


edytowany 1x, ostatnio: Patryk27
0

Ale czy wtedy nie tracimy sensu stosu? W sensie abstrakcyjnym, umownym? ^^

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

"jeśli coś chodzi jak kaczka i kwacze jak kaczka, to musi być kaczką"
Jeżeli coś oferuje odpowiednie metody i działa jak stos, to musi być stos.
Po co utrudniać, jeżeli nie byłoby z tego żadnych zysków?


edytowany 1x, ostatnio: Patryk27
airborn
  • Rejestracja:prawie 16 lat
  • Ostatnio:prawie 7 lat
  • Postów:274
0

Sensem stosu jest to, że zdejmujesz z niego elementy w odwrotnej kolejności niż je tam wkładałeś. Jakiekolwiek indeksy i to czy one rosną czy maleją to już są szczegóły implementacyjne.

edytowany 1x, ostatnio: airborn
bogdans
Chyba w odwrotnej :)
airborn
Zacznę czytać wszystko dwa razy przed wysłaniem :/ dzięki ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.