Stos reprezentuj za pomocą struktury o nazwie
Stos
, która zawiera tablicę o elementach typu double
.Początkowo rozmiar tablicy jest równy 8 (i nigdy nie jest mniejszy). Przy wstawianiu elementu do zapełnionej
tablicy jej rozmiar powinien się podwajać (do 16, 32, 64, 128, ...). Przy wyjmowaniu elementu, jeśli stwierdzimy, że
tablica jest wypełniona w mniej niż 25%, należy redukować rozmiar tablicy o połowę. Widzimy, że dzięki temu
rozmiar tablicy „dynamicznie” będzie się dostosowywać do ilości przechowywanych weń danych.
Funkcje do napisania:
pusty
– orzeka, czy stos jest pusty wloz
– umieszcza element na stosie wyjmij
– zwraca wartość w kolejności LIFO (last in-first out) tworzStos
– tworzy nowy, pusty stos usunStos
– usuwa stos i zawartą w nim tablicę z pamięci Potrafiłem zrobić tylko tyle chociaż i tak nie wiem czy dobrze jakby ktoś z Was by mógł mi to sprawdzić i pokazać jak się robi funkcje wyjmij byłbym bardzo wdzięczny!
Kod: Zaznacz cały
struct Stos { double* e; int m};
Stos tworzStos(){
Stos a;
a.e=NULL;
a.m=8;
return a;}
bool pusty(Stos a){
for(int i =0; i<a.m; i++){
if(a.e[i]!=NULL) return false;}
return true; }
void usunStos(Stos a){
delete[] a.e;
}
void wloz(Stos a, double f){
int k=0;
if(k<a.m){
a.e[k]= f;}
else {
double*e2= new double[a.m*2];
e2=a.e;
e2[k]=f;
a.m=e2;
delete []e2;}
k++;}