[C++] Implementacja stosu przy użyciu tablicy i struktury

Drelson
Użytkownik
Użytkownik
Posty: 79
Rejestracja: 7 paź 2014, o 18:01
Płeć: Mężczyzna
Lokalizacja: warszawa
Podziękował: 16 razy

[C++] Implementacja stosu przy użyciu tablicy i struktury

Post autor: Drelson »

Witam mam coś takiego do rozwiązania :
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++;}
Ostatnio zmieniony 7 gru 2014, o 21:44 przez Afish, łącznie zmieniany 2 razy.
Powód: Kod programu umieszczaj w tagach [code][/code].
ODPOWIEDZ