Napisac i przetestowac implementacje stosu liczb calkowitych, z wykorzystaniem struktur jezyka C. Obszar pamieci potrzebny na stos powinien byc dynamicznie alokowany (rozszerzany) w miare potrzeb, tylko jezeli brakuje miejsca na nowo dodawane elementy. Rozmiar zaalokowanej pamieci powinien byc zwiekszany dla kazdej rozpoczetej czwórki elementów, czyli nie za kazdym razem, ale tylko przy dodawaniu elementu pierwszego, piatego, dziewiatego itd. Uwaga! Stos pusty, zaraz po inicjalizacji, nie powinien jeszcze alokowac zadnej pamieci na elementy - pierwsza alokacja nastepuje dopiero przy próbie dodania pierwszego elementu! Zakladamy, ze raz rozmiar przydzielanej pamieci nie jest zmniejszany w miare zdejmowania elementów ze stosu. Stos powinien byc oparty na strukturze typu stack o nastepującej definicji: struct stack { int *data; /* wskaznik do obszaru pamieci przechowującej elementy stosu */ int count; /* ilosc elementów na stosie */ int size; /* pojemnosc stosu, czyli liczba elementów, która sie na nim zmiesci bez potrzeby zwiekszania ilosci pamieci */ }; Do dzialania stos bedzie wykorzystywac nastepujące funkcje: void stack_init(struct stack*); /* inicjalizacja stosu (bez alokacji pamieci) */ void stack_free(struct stack*); /* zwolnienie calej pamieci zajmowanej przez stos*/ void stack_clear(struct stack*); /* skasowanie stosu bez zwalniania pamieci (tylko zeruje count) */ void stack_push(struct stack*, int elem); /* odlozenie elementu na stos i realokacja pamieci w razie potrzeby */ int stack_pop(); /* zdjecie i odczytanie elementu ze stosu */