Przede wszystkim wywal tą tablice. Stos to struktura dynamiczna.
Jakbyś chciał się bawić w robienie stosu w ten sposób, czyli na statycznych danych to równie dobrze mogłeś użyć vectora.
Stos, jako struktura dynamiczna powinien być tworzony jak sama nazwa wskazuje dynamicznie, czyli na wskaźnikach.
Stwórz sobie strukture w następujący sposob:
struct struktura{
struktura * nastepny;
// dane
}
I niech wszystko odbywa się dynamicznie.
Najpierw deklarujesz sobie wskaźnik wsk którym za pomocą operatora new zaalokujesz sobie dynamicznie zmienna typu struktura, oraz jeden wskaznik pomocniczy, nazwijmy go wskpom. Masz wiec wskaznik na pierwsza "cegielke z danymi" na twoim stosie. Kiedy chcesz dodać nowy element do stosu dajesz wskpomowi adres ktory trzyma wsk, zeby ci sie ten adres nie zgubil i za pomoca wsk znowu uzywasz new do zrobienia sobie kolejnej dynamicznej zmiennej typu struktura. Teraz wyjasnia sie po co wskaznik wewnatrz struktury. Wskaznikowi nastepny wewnatrz Twojej nowoutworzonej zmiennej ktorej adres trzyma wsk przypisujesz to co trzyma wskpom, czyli adres cegielki "pod nim" na stosie. I jak chcesz dodać kolejna "cegielke" to znowu, wskpom dostaje adres wsk zebys mial adres elementu na szczycie stosu, wsk alokuje nowa zmienna i tak dalej i tak dalej.
Tym sposobem każdy element stosu pamięta adres elementu pod nim, a calosc odbywa sie, jak przystalo na dynamiczna strukture, a jakze, dynamicznie.
Co do usuwania elementow ze stosu, mysle ze domyslasz sie ze trzeba poruszać się wskaźnikami odwrotnie.
Nie wrzuce ci tu gotowego kodu, bo to juz twoje zadanie go napisac ;)
Jesli sa jakies niejasnosci to pytaj.