Programowanie funkcyjne/Programowanie imperatywne/Ćwiczenia: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Kubica (dyskusja | edycje)
Kubica (dyskusja | edycje)
Linia 1: Linia 1:
== Praca domowa ==
== Praca domowa ==
* Zastosuj metodę spaceru do sprawdzenia, czy drzewo jest drzewem BST.
{{cwiczenie|[BST]||
* Zaimplementuj modyfikowalne listy i procedurę <tt>append</tt>, która modyfikuje daną listę przez dołączenie na jej końcu innej listy. Dołączana lista jest przy tym niszczona. Procedura <tt>append</tt> powinna działać w stałym czasie. (Lista powinna zawierać referencje do obu jej końców).  
Zastosuj metodę spaceru do sprawdzenia, czy drzewo jest drzewem BST.
* Napisz procedurę, która odwraca zadaną listę modyfikowalną. Dwukrotne odwrócenie powinno dawać listę ''tożsamą'' z początkową. Należy to zrobić w stałej pamięci dodatkowej i liniowym czasie.  
}}
 
{{cwiczenie|[<tt>Append</tt>]||
Zaimplementuj modyfikowalne listy i procedurę <tt>append</tt>,  
która modyfikuje daną listę przez dołączenie na jej końcu innej listy.  
Dołączana lista jest przy tym niszczona.  
Procedura <tt>append</tt> powinna działać w stałym czasie.  
(Lista powinna zawierać referencje do obu jej końców).  
}}
 
{{cwiczenie|[Odwracanie listy]||
Napisz procedurę, która odwraca zadaną listę modyfikowalną.  
Dwukrotne odwrócenie powinno dawać listę ''tożsamą'' z początkową.  
Należy to zrobić w stałej pamięci dodatkowej i liniowym czasie.
}}


== Ćwiczenia ==
== Ćwiczenia ==

Wersja z 18:22, 17 gru 2006

Praca domowa

Ćwiczenie [BST]

Zastosuj metodę spaceru do sprawdzenia, czy drzewo jest drzewem BST.

Ćwiczenie [Append]

Zaimplementuj modyfikowalne listy i procedurę append, która modyfikuje daną listę przez dołączenie na jej końcu innej listy. Dołączana lista jest przy tym niszczona. Procedura append powinna działać w stałym czasie. (Lista powinna zawierać referencje do obu jej końców).

Ćwiczenie [Odwracanie listy]

Napisz procedurę, która odwraca zadaną listę modyfikowalną. Dwukrotne odwrócenie powinno dawać listę tożsamą z początkową. Należy to zrobić w stałej pamięci dodatkowej i liniowym czasie.

Ćwiczenia

Ćwiczenie [Listy cykliczne]

Zaimplementuj cykliczne listy modyfikowalne.

Ćwiczenie [Wykrywanie cykli]

Napisz procedurę sprawdzającą, czy dana lista zawiera cykl. Można to zrobić w stałej pamięci i liniowym czasie (i to na kilka sposobów!).

Laboratorium

Ćwiczenie [FIFO]

Zaimplementuj imperatywną kolejkę FIFO.

Ćwiczenie [Kolejki dwustronne]

Zaimplementuj imperatywne kolejki dwustronne z dodatkowymi operacjami odwracania i sklejania kolejek. Wszystkie operacje powinny działać w czasie stałym.

Ćwiczenie [Find-union]

Zaimplementuj drzewa find-union.