Implementacje obiektowa Stosu w C++

Na początek przedstawię deklarację klasy..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class stack
{
private:
struct wezel
{
wezel *next;
int value;
};
wezel* head;

public:
stack();
~stack();
bool push(int);
int pop();
};

Struktura węzła to nic innego jak sam wskaźnik i wartość. Dalej mamy konstruktor i destruktor oraz funkcję push(int) czyli dodaj na stos i pop() czy zdejmij ze stosu.
No i właściwa implementacja tej klasy:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
stack::stack(){
head=NULL; // na poczatek ustawiamy head na null, czyli stos na poczatku jest zerowy
}

stack::~stack(){
delete head;
}

bool stack::push(int a){
wezel* nowy = new wezel; //tworzymy nowy węzeł, nowy egzemplarz struktury
nowy->value=a; //dopisujemy do niego wartosć podana w parametrze push(int)
nowy->next=head;//jako kolejny element w stosie będzie glowa, czyli nasz null
head=nowy;//ustawiamy nasz nowo stworzony węzeł jako pierwyszy (w stosie kładziemy na wierzch i zdejmujemy zwierzchu)
return true; //i zwracamy true..
}

int stack::pop(){
return head->value; //zwracamy wartość z góry stosu
}

Całość implementacji jest zrobiona poprawnie, ale brakuje jednego elementu ;)
Przy pobieraniu wartości z góry stosu od razu jest ona kasowana. I to zadanie jest do zrobienia dla Ciebie! :) Jeśli uda Ci się dopisac usuwanie pobieranego elementu – będzie to już całościowa implementacja stosu. Jak to zrobić? Podpowiedź znajdziesz w komentarzach do kodu który znajdziesz tutaj :)

Dzięki za wizytę,
Mateusz Mazurek
Podziel się na:
    Facebook email PDF Wykop Twitter

Dodaj komentarz

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subskrybuj  
Powiadom o