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

Wieza z Hanoi - listy powiazane

Ostatnio zmodyfikowano 2017-09-15 13:35
Autor Wiadomość
Michal192
Temat założony przez niniejszego użytkownika
Wieza z Hanoi - listy powiazane
» 2017-09-14 14:06:48
Chcialbym rozwiazac problem wiez z Hanoi z uzyciem list powiazanych, jednak utknalem, dlatego prosze o pomoc. Moj kod

C/C++
struct disk
{
    int number;
    disk * next;
};

disk * hanoi( disk * source, disk * auxiliary, disk * target, int n ) //krazki z source przenosimy na target
{
    disk * p_A = source;
    disk * p_C = target;
    if( n > 0 )
    {
       
        if( source->number == n && target->number > source->number ) // jesli jestemy w stanie przeniesc krazek n z source na target to przenies
        {
            source = p_A->next; //zdjecie krazka ze slupka A
            print_disks( source );
            p_A->next = p_C; // podpiecie do krazka elementow ze slupka C
            target = p_A; // polozenie krazka na slupku C
            print_disks( target );
            cout << "-----------" << endl;
        }
        else
        {
            auxiliary = hanoi( source, target, auxiliary, n - 1 ); // jesli nie, to budujemy wieze n-1 na pomocniczym slupku
        }
        target = hanoi( auxiliary, source, target, n - 1 ); //przenosimy wieze z pomocniczego slupka na target
       
    }
    return target;
}
Nie jestem w stanie osiagnac pozadanego efektu, czy ktos moze cos podpowiedziec? Dzieki
P-164872
darko202
» 2017-09-15 13:35:39
1.
czy mógłbyś doprecyzować Twój problem ?

2.
operacja

disk * p_A = source;
....
target = p_A; // polozenie krazka na slupku C

a co jeśli na słupku leży już jakiś element - tu jest chyba jakaś luka
o ile pamiętam to jest niezbędny element w algorytmie.
np. na 
https://pl.wikipedia.org/wiki​/Wie%C5%BCe_Hanoi

3.
zdziwiło mnie, że tak jakby nie używasz w algorytmie 3 słupków 
tu mogę się mylić :(
P-164915
« 1 »
  Strona 1 z 1