eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingCykl w liście jednokierunkowejRe: Cykl w liście jednokierunkowej
  • Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!.PO
    STED!not-for-mail
    From: bartekltg <b...@o...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: Cykl w liście jednokierunkowej
    Date: Wed, 15 Jun 2011 08:42:48 +0200
    Organization: http://onet.pl
    Lines: 44
    Message-ID: <it9k9h$g8h$1@news.onet.pl>
    References: <o...@l...medicom.local>
    NNTP-Posting-Host: 144-mi3-6.acn.waw.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: news.onet.pl 1308120177 16657 85.222.69.144 (15 Jun 2011 06:42:57 GMT)
    X-Complaints-To: n...@o...pl
    NNTP-Posting-Date: Wed, 15 Jun 2011 06:42:57 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.2.17) Gecko/20110414
    Thunderbird/3.1.10
    In-Reply-To: <o...@l...medicom.local>
    Xref: news-archive.icm.edu.pl pl.comp.programming:190982
    [ ukryj nagłówki ]

    W dniu 2011-06-15 08:19, Wojciech "Spook" Sura pisze:
    > Hej!
    >
    > Kolega zaproponował zadanie: w jaki sposób odnaleźć cykl w liście
    > jednokierunkowej nie niszcząc jej, zachowując stałe zużycie pamięci i w
    > czasie liniowym?


    Ale odnaleźć cykl oznacza wypisać wszystkie elementy cyklu,
    rownoważnie znaleźć jakikolwiek element cyklu, czy
    znaleźć element 'wejściowy'?

    Jeśli to pierwsze, to:

    Masz dwa iteratory, biegacza i wartownika.

    ustalasz wartownika na pierwszym elemencie,
    nastepnie w pętli k =1,2...
    Niech biagacz przeiteruje 2^k elementów liczac
    od wartownika. Jesli natrafił na wartownika
    (petla) lub koniec listy, kończymy pętle.
    Jeśli nie, ustawiamy wartownika na ostatniej
    pozycji biegacza.

    Jeśli nie było ślepego końca, biegniemy
    ostatni raz w kolko po cyklu wypisując składowe.


    Wartownika postawimy na cyklu po co najwyzej 2n ruchach
    biegacza. Dodatkowe n na ostatnie przejście cyklu,
    łącznie zrobimy 3*n operacji przesuniecie biegacza + test warunku.

    Jak wyznaczyć 'pierwszy' element cyklu liniowo w stałej pamięci
    nie mam pomysłu.

    > Mam pewien pomysł, ale niestety przy liniowym zużyciu pamięci, nijak nie
    > umiem zejść do stałego. Macie jakieś pomysły?

    Podejrzewam, że to ten sam tylko założyłeś od razu trudniejszą
    wersje problemu.

    pozdrawiam
    bartekltg

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: