Skocz do zawartości
Cwieku

Stos --dodawanie elementu

Rekomendowane odpowiedzi

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...