Stos - funkcja pop

0

Staram się zrobić implementację stosu. Problem pojawił się w funkcji która "zrzuca element" ze stosu.

struct elem{
    int dane;     
    elem* nast;     
};

/*                                    */

int pop (elem* &stos)
{
	if(stos!=NULL){
		int x = stos->dane;
		stos=stos->nast;
		return x;
	}
	return 0;

}

Wg mnie nie jest to źle napsiane, jednak kompilator się wysypuje. Wyrzuca mi w konsoli same (zakładam, że) adresy albo losowe wartości..

    while(!isEmpty(mojStos))    
        cout << pop(mojStos) << " ";    

Wiem też, że trzeba potem zwolnic pamięć. Tylko gdzie i jak? Pozostałe funkcje stosu (isEmpty, push, topEl [sprawdzanie elementu na górze stosu]) działają.

0

php i zabawa ze stosem to takie niepasujące do siebie rzeczy bym powiedział. Takie coś to w c++ rób.

0

A Spróbuj tak:

int pop (elem stos)
{
	elem tmp;
	tmp = stos;
	int x = tmp->dane;
	if (tmp == NULL) {
		// jakaś obsługa błędu, wyjątek...
	}
	else {
		tmp = tmp->nast;
		free(stos);
		stos = tmp;
		// jeszcze length--; pomniejszenie rozmiaru stosu
		return x;
	}

A w ogóle, to lepiej napisać to w C++, klasa Stack, wewnętrzna struktura node, wszystkie te funkcje Będziesz miał, jako metody na klasie...

0

Stos jako wzorzec projektowy można zaimplementować w PHP (w zasadzie już chyba jest zaimplementowany bo widzę, że jest coś takiego jak array_pop i array_push. Ale z drugiej strony implementacja czegoś samego to fajna zabawa (i w C++ pewnie faktycznie lepsza, bo na niższym poziomie, więc można poznać bardziej dogłębnie temat). Swoją drogą gdzie tu było PHP? OP pisze o C++.

Wg mnie nie jest to źle napsiane, jednak kompilator się wysypuje.
Wyrzuca mi w konsoli same (zakładam, że) adresy albo losowe wartości..

To co się wysypuje w końcu - kompilator czy program??

0
LukeJL napisał(a):

Swoją drogą gdzie tu było PHP? OP pisze o C++.

Chyba jednak czas się przespać :/

0

Program się zapetla w nieskończoność przy pobieraniu elementu ze stosu bo nie jest wstanie pobrać elementu i przesunąć wskaźnik na poprzedni.

Wysypuje się program.
Edit: potrzebuje zrobić samemu implementacje stosu

1 użytkowników online, w tym zalogowanych: 0, gości: 1