Cwieku Opublikowano 30 Października 2004 Zgłoś Opublikowano 30 Października 2004 Wiatm, zaznaczam ze jestem poczatklujacy z C++ ... niestety nie moglem znalesc materialow pomocnych mi w utworzeniu stosu. tak wiec zwaracam sie z prosba o pomoc w utworzeniu funkcji... dokladnie chodzi mi o to ze uruchamiam funkcje 4 elemntami "dodaj(int,int,int,int)" a ona zapisuje mi je do tablicy... mam dla zapisywanego jednego elemntu: void stack::push(int val) { *(top++)=val; } jak zrobic zeby tak samo zapisywało mi sie z 4 elemntami, i ten wskaznk wskazywal na te 4 wartosci przy wypisywaniu(zapewne jakiskonstruktor) ale jak to napisac?!... i jendoczesnie zeby mozna było to pzoenij łštwo wypisac... jesli ktos ma cos podobnego, pisał kiedys to prosze o pomoc... pozdrawiam Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
marcinEc Opublikowano 31 Października 2004 Zgłoś Opublikowano 31 Października 2004 Wiatm, zaznaczam ze jestem poczatklujacy z C++ ... niestety nie moglem znalesc materialow pomocnych mi w utworzeniu stosu. No nie żartuj. tak wiec zwaracam sie z prosba o pomoc w utworzeniu funkcji... dokladnie chodzi mi o to ze uruchamiam funkcje 4 elemntami "dodaj(int,int,int,int)" a ona zapisuje mi je do tablicy... mam dla zapisywanego jednego elemntu: void stack::push(int val) { *(top++)=val; } jak zrobic zeby tak samo zapisywało mi sie z 4 elemntami, i ten wskaznk wskazywal na te 4 wartosci przy wypisywaniu(zapewne jakiskonstruktor) ale jak to napisac?!... i jendoczesnie zeby mozna było to pzoenij łštwo wypisac... jesli ktos ma cos podobnego, pisał kiedys to prosze o pomoc... pozdrawiam Zastanów się jeszcze raz co chcesz zrobić. Czy to na pewno będzie stos? Wątpię... Jakaś struktura na pewno ale nie klasyczny stos, bo dla stosu mamy tylko operacje push/pop, z tym że pop działa na OSTATNIO wpisanym elemencie, jednym elemencie(*), w Twoim przypadku to chyba int. Twój opis bardziej pasuje do kolejki (ang. queue). Wtedy masz do syspozycji dwa wskaźniki: head i tail, gdzie tail oznacza koniec kolejki i tu elementy są zapisywane, a head oznacza początek i z niego elementy są pobierane. W takim podejściu możesz zapisać do pustej kolejki dowolną ilość elementów i odczytać je wszystkie po kolei (w kolejności wpisania) - chyba o to Ci chodzi. (*) oczywiście możliwe jest utworzenie stosu, którego elementami będzie struktura zawierająca w sobie cztery liczby int lub nawet stos klas z rozwiniętym drzewem dziedziczenia, wtedy elementy mogłyby same wiedzieć czym są. Myślę jednak, że to rozwiązanie jest bardziej skomplikowane od kolejki. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Johnjohn Opublikowano 31 Października 2004 Zgłoś Opublikowano 31 Października 2004 wydaje mi sie ze temu panu chodzi wlasnie o to by jeden elemet stosu zawieral cztery liczby int. jezeli tak to jest to bardzo proste. tworzysz sobie strukture zawierającą cztery elementy int np. struct ELEMENTY { int el1; int el2; int el3; int el4; }; i teraz poprostu w kazdym elemencie stosu umieszczasz jednom powyzsza strukture "ELEMENTY" struktura stosu wyglada nastepujaco struct stos { ELEMENTY cos; stos *nast; }; i teraz wszyskie operacje wykonujemy juz jak na zwyklym stosie, i bez problemu mozesz odniesc sie do chcianych czterech int'uw. Mysle ze o to chodzilo. Pozdrawiam Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
marcinEc Opublikowano 31 Października 2004 Zgłoś Opublikowano 31 Października 2004 wydaje mi sie ze temu panu chodzi wlasnie o to by jeden elemet stosu zawieral cztery liczby int. [...] i teraz poprostu w kazdym elemencie stosu umieszczasz jednom powyzsza strukture "ELEMENTY" struktura stosu wyglada nastepujaco struct stos { ELEMENTY cos; stos *nast; }; i teraz wszyskie operacje wykonujemy juz jak na zwyklym stosie, i bez problemu mozesz odniesc sie do chcianych czterech int'uw. Zauważ tylko, że niepotrzebnie skomplikowałeś budowę stosu używając implementacji listowej zamiast tablicowej. Autor pytania może już kompletnie zdębieć na ten widok :roll: Wystarczy tablica: [php:1:2742d15a49] const int rozmiar_stosu = 1000; ELEMENTY stos[rozmiar_stosu]; [/php:1:2742d15a49] I tu dochodzimy do tego, że programowanie takiego stosu nie jest wcale takie proste. Trzeba stworzyć o wiele bardziej rozbudowane metody push i pop, itd. niż w przypadku zwykłego stosu liczb int. Dodatkowo, jeśli będę potrzebował zmienić ilość elementów to muszę zrobić to w kilku miejscach, itp problemy. Wiem, że to się wydaje proste, bo to jest proste w koncepcji ale trochę trudniejsze (szczególnie dla początkujących) w (DOBREJ!) implementacji. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...