Mateusz Mazurek – programista z pasją

Python, architektura, ciekawostki ze świata IT

Programowanie

Implementacje obiektowa Stosu w C++

Cześć! Cieszę się, że mnie odwiedziłeś/aś. Zanim przejdziesz do artykułu chciałbym zwrocić Ci uwagę na to, że ten artykuł był pisany kilka lat temu (2012-12-07) miej więc proszę na uwadzę że rozwiązania i przemyślenia które tu znajdziesz nie muszą być aktualne. Niemniej jednak zachęcam do przeczytania.

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

A może wolisz nowości na mail?

Subskrybuj
Powiadom o
guest

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

0 komentarzy
Inline Feedbacks
View all comments