Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 25. 11. 2009 19:59

SweetNelli
Příspěvky: 110
Reputace:   -1 
 

pascal - ukazatele - spojové seznamy

první příklad:
Rozpůlení spojového seznamu

Mějme deklaraci následující procedury:

procedure RozdelSeznam(var ukazatel_na_prvni_prvek : pcislo; var druha_pulka : pcislo);
var
          ...
begin
          ...
end;

Dopište tělo procedury tak, aby vstupní seznam rozdělila na dvě části, tak aby rozdíl v počtu prvků 
jednotlivých částí byl maximálně 1. Procedura musí zachovat pořadí prvků a nesmí používat žádná 
pomocná pole ani volat proceduru new/dispose. Cíle by měla dosáhnout v čase O(N) pouze pomocí 
manipulace s ukazateli. Např. vstupní seznam 1,2,3,4,5,6,7 rozdělí na seznamy 1,2,3,4 a 5,6,7. 
(resp. 1,2,3 a 4,5,6,7). První parametr je vstupní spojový seznam. Druhý parametr je pouze 
výstupní, tj. na začátku neinicializovaný.

2 příklad:
Vkládání doprostřed spojového seznamu

Napište proceduru, která dostane ukazatel na začátek spojového seznamu a číslo, které vloží 
doprostřed spojového seznamu.

Např. Pro seznam 1->1->1->1 a číslo 4 bude výsledkem seznam 1->1->4->1->1.

Offline

 

#2 13. 12. 2009 00:25

Kondr
Veterán
Místo: Linz, Österreich
Příspěvky: 4247
Škola: FI MU 2013
Pozice: Vývojář, JKU
Reputace:   38 
 

Re: pascal - ukazatele - spojové seznamy

Koukám, že nám toto téma zůstalo viset nevyřešené ... druhý příklad se dá najít mnohde na webu, třeba zde: http://rosettacode.org/wiki/Singly-Link … %29#Pascal

První je trchu trikový -- vyšleme dva ukazatele, s jedním skáčeme o dva prvky, se druhým o jeden. První  dorazí na konec seznamu když první dorazí před polovinu. Jako výstup vrátíme ukazatel na následující prvek (tj. ten za polovinou), hodnotu ukazate na následující prvek vynulujeme.


BRKOS - matematický korespondenční seminář pro střední školy

Offline

 

#3 20. 12. 2009 20:35

xxsawer
Příspěvky: 196
Reputace:   
 

Re: pascal - ukazatele - spojové seznamy

Tak to tady ted prochazim a tady to je samej seznam :)
1. Priklad
Nevim jestli to bude splnovat nejhorsi slozitost n, ale mohlo by...
Kdyz nevis jak dlouhej je ten seznam tak normalne budes skakat po dvou prvkach az dojdes na konec. No a az tam dojdes tak ti bude jasny, ze ten seznam ma bud n nebo n+1 prvku (kde n je sudy cislo). To rozdelis na pul a od zacatku dojdes na tu pozici v seznamu a rozdelis to

2. Priklad
To stejny jenom to nerozdelujes ale vkladas tam neco...

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson