Wieza z Hanoi - listy powiazane
Ostatnio zmodyfikowano 2017-09-15 13:35
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 struct disk { int number; disk * next; };
disk * hanoi( disk * source, disk * auxiliary, disk * target, int n ) { disk * p_A = source; disk * p_C = target; if( n > 0 ) { if( source->number == n && target->number > source->number ) { source = p_A->next; print_disks( source ); p_A->next = p_C; target = p_A; print_disks( target ); cout << "-----------" << endl; } else { auxiliary = hanoi( source, target, auxiliary, n - 1 ); } target = hanoi( auxiliary, source, target, n - 1 ); } return target; }
Nie jestem w stanie osiagnac pozadanego efektu, czy ktos moze cos podpowiedziec? Dzieki |
|
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_Hanoi3. zdziwiło mnie, że tak jakby nie używasz w algorytmie 3 słupków tu mogę się mylić :( |
|
« 1 » |