Implementacja stosu w C - kod z ksiazki z bledem?

0

Witam, czytam ksiazke "C programming - a modern approach v2". Trafilem na implementacje stosu ktora wydaje mi sie dziwna, czy moglby ktos rzucic okiem i zweryfikowac? Wklejam wyciety kawalek kodu:

#include <stdbool.h>
#define STACK_SIZE 100
int contents[STACK_SIZE];
int top = 0;

void push(int i)
{
	contents[top++] = i;
}

int pop(void)
{
	return contents[--top];
}

Funkcja push wydaje mi sie w porzadku - do bierzacego szczytu stosu dodajemy argument i, nastepnie zwiekszamy index.
Funkcja pop wyglada dziwnie, ze wzgledu na prefix - najpierw zmniejszamy index, a potem wyciagamy wartosc z tablicy. Czyli nie pobieramy wartosci ze szczytu stosu tylko z indexu 1 ponizej szczytu? Czy tak to powinno wygladac czy to blad w ksiazce?

0

kiedy wrzuciłeś coś do stosu to po wrzuceniu zwiększyłeś top aby wyciągnąć to co tam wrzuciłeś potrzebna odwrotna kolejność, najpierw zmniejszamy później pobieramy,

0

@ucze_sie_c rozpisz sobie na kartce to może? Zauważ że po dodaniu czegoś na stos, top wskazuje na pierwszy PUSTY element a nie na ostatni zajęty.

0

Myslalem, ze "top" powinien wskazywac na "gorny" element stosu, nie na pusty element. Wtedy bysmy mieli ++top w push() i top-- w pop(). Pewnie nie robi roznicy, kwestia przyzwyczajenia.

Dzieki, pomieszalem troche :P

0

robi różnicę, przy proponowanej przez ciebie zmianie dla pustego stosu top ma mieć wartość -1 co nie jest najlepszym pomysłem.

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