chciałbym móc wypisywać elementy stosu i nie musieć się odwoływać się .pop() oraz while(!.empty()) [warunek kończący wypisywanie w momencie opróżnianie stosu], ponieważ wtedy pop() opróżnia mój stos, a ja tego nie chcę
innymi słowy wpadłem na pomysł, żeby już przed miejscem gdzie wpisuje ileś elementów ustawić na NULL wskaźnik na głowę stosu(wskaźnik *head), który każdorazowo po wpisaniu elementu by się przesuwał wyżej, a przy wypisywaniu mieć jakiś inny wskaźnik(wskaźnik *temp), początkowo ustawiono tak samo jak ten na głowę stosu i żeby pętla wypisująca zakończyła się w momencie gdy ten wskaźnik (*temp) wskaże na NULL ?
próbowałem zrobić to tak
int *head=stos3.top() //jeszcze przed pętlą wpisującą, ale kompilator odrzucał to rozwiązanie
/stos_wlasne_elementy.cpp|12|error: invalid conversion from ‘int’ to ‘int*’|
||=== Build finished: 1 errors, 0 warnings ===|
int head=stos3.top() // tak się kompilowało, ale jak można się domyśleć, jeśli przy pętli wypisującej miałem (head–) to wypisywał mi 1,2,3,4,5 itd. korzystam z programu CODE::BlOCKS 8.02 , OS -> UBU 9.10 -> biblioteki załączone jak widać mam nadzieję, że nie pogmatwałem zbytnio i wiadomo o co chodzi i uda mi się dojść jak posługiwać się wskaźnikami przy stosie.
#include
#include
using namespace std;
int main()
{
cout<<"Stos2... wpisywanie i wypisywanie własnych elementów"<
stack stos2;
short int rozmiar_zadany;
int element;
cout <<"Podaj wstępny rozmiar stosu"<
cin >>rozmiar_zadany;
while(rozmiar_zadany!=0)
{
cin>>element;
stos2.push(element);
rozmiar_zadany--;
}
cout <<"\n\nNastąpi wypisanie elementów tablicy i opróżnienie stosu\n";
cout <<"Zanim to nastąpi dopiszmy jeszcze element\n";
cin >>element; stos2.push(element); cout <<"\n";
//punkt wypisywania
while(!stos2.empty())
{
cout<
stos2.pop();
}
//koniec punktu wypisywania
cout <<"Zakończono działanie";
return 0;
}