Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Stos. Sortowanie elementów rosnąco.

Ostatnio zmodyfikowano 2017-12-12 14:52
Autor Wiadomość
Roud
Temat założony przez niniejszego użytkownika
Stos. Sortowanie elementów rosnąco.
» 2017-12-11 22:31:10
Mam za zadanie stworzyć dwa stosy. Jeden, który będzie zawierał liczby, a drugi, który będzie zawierał  te same liczby ale uporządkowane rosnąco. Mam z tym mały problem. Nie wiem jak się do tego zabrać. Umiem utworzyć stos i wypisać elementy, ale posegregować ich nie potrafię. Nie można korzystać z tablic. Proszę o podpowiedź. Kawałek kodu. Schody się zaczynają przy drugim stosie, gdy mam znaleźć miejsce w, które mam wstawić dany element.
Przykład: podaje liczby 4 3 8 5 1. Przerzucam 4 na stos. Następnie szukam miejsca dla 3 itd.
C/C++
struct stos
{
    int wart;
    stos * wsk;
};

int main()
{
    stos * wierz = 0;
    stos * wierz2 = 0;
    int liczba, n;
    stos * pom;
    stos * pom2;
    cout << "n=";
    cin >> n;
    for( int i = 0; i < n; i++ )
    {
        pom = wierz;
        wierz = new stos;
        cin >> liczba;
        wierz->wart = liczba;
        wierz->wsk = pom;
    }
P-167807
pekfos
» 2017-12-11 23:07:08
Weź dowolny algorytm sortowania i zaimplementuj go na twojej liście jednokierunkowej. Najprostsze będzie tu sortowanie przez wybór.
https://pl.wikipedia.org/wiki​/Sortowanie_przez_wybieranie
P-167810
Roud
Temat założony przez niniejszego użytkownika
» 2017-12-11 23:28:03
Być może źle wytłumaczyłem moja wina, ale to ma mi nie sortować stosu tylko szukać tak jakby miejsca w drugim stosie, a tam algorytm sortuje. To ma mi wrzucić element w odpowiednie miejsce. Na tym przykładzie 4 3 8 5 1. Najpierw ma mi wrzucić 4 na drugi stos potem, sprawdza czy 3 może zostać wrzucone na stos po 4. Nie może więc przenosi przed 4 i mamy 3 4. Teraz sprawdza dla 8. Może więc zapisuje 8 na wierzchołku i mam 3 4 8. Potem sprawdza czy 5 może zostać zapisany na wierzchołku. Nie może więc sprawdza czy może przed 8. Może bo 5>4 i 5<8 wiec mamy 3 4 5 8 itd. 
P-167811
pekfos
» 2017-12-11 23:42:29
No to tak to zaimplementuj.
P-167812
Roud
Temat założony przez niniejszego użytkownika
» 2017-12-12 09:49:32
Problem w tym, że nie mam pojęcia jak to się robi. Widocznie nie wiem jak stos działa. Wiem, że mam szukać takiego elementu, który będzie większy od elementu położonego niżej na stosie i mniejszy od tego położonego wyżej a zaprogramować na stosie nie umiem.
P-167813
darko202
» 2017-12-12 14:52:52
zacznij od
http://cpp0x.pl/kursy​/Kurs-STL-C++​/Adapter-stosu-std-stack/116
http://www.algorytm.org​/klasyczne/stos/stos-1-c.html

jeśli to za mało to poszukaj
https://www.bing.com/search​?q=c%2B%2B+stos​&src=IE-SearchBox&FORM=IENTSR

2.
problemem jest to że na stosie nie ma operacji wstawienia elementu
przy sortowaniu w czasie wstawiania musisz napisać taką metodę która :
* musi zdjąć kolejne elementy na stos pomocniczy
* wstawić nowy element
* wstawić elementy z tego stosu pomocniczego

3.
możesz też przepisywać wartości z 1 stosu używając czegoś podobnego do
sortowania bąbelkowego  

1. znajduję największy element
2. potem mniejszy od ostatniego
3. powtórzyć p.2 (do wyczerpania kandydatów)

za każdym razem wstawiając znaleziony element na stos
P-167821
« 1 »
  Strona 1 z 1