Metody programowania / Ćwiczenia 2: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Pch (dyskusja | edycje)
Nie podano opisu zmian
 
(Nie pokazano 20 wersji utworzonych przez 3 użytkowników)
Linia 18: Linia 18:
Napisz procedurę Odwróć(var l:lista) odwracającą listę l.
Napisz procedurę Odwróć(var l:lista) odwracającą listę l.


{{rozwiazanie| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie 1</span>
<div class="mw-collapsible-content" style="display:none">
  '''procedure''' Odwróć(var l:lista);
  '''procedure''' Odwróć(var l:lista);
  //Odwracamy listę l
  //Odwracamy listę l
Linia 42: Linia 44:


</div>
</div>
</div>}}
</div>


== Zadanie 2 (Scalanie dwóch posortowanych list)==
== Zadanie 2 (Scalanie dwóch posortowanych list)==
Napisz funkcję Scal(l1,l2:lista):lista scalającą dwie posortowane niemalejąco listy l1 i l2, tak aby wynikowa lista również była posortowana niemalejąco.
Napisz funkcję Scal(l1,l2:lista):lista scalającą dwie posortowane niemalejąco listy l1 i l2, tak aby wynikowa lista również była posortowana niemalejąco.


{{rozwiazanie| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span>
<div class="mw-collapsible-content" style="display:none">
  '''function''' Scal(l1,l2:lista): lista;
  '''function''' Scal(l1,l2:lista): lista;
  //Listy l1 i l2 są posortowane niemalejąco; scalamy je do jednej listy również posortowanej niemalejąco
  //Listy l1 i l2 są posortowane niemalejąco; scalamy je do jednej listy również posortowanej niemalejąco
Linia 55: Linia 59:
   atrapa^.nast:=nil;
   atrapa^.nast:=nil;
   akt:=atrapa;
   akt:=atrapa;
   '''while''' l1 <> nil and l2 <> nil '''do'''
   '''while''' (l1 <> nil) and (l2 <> nil) '''do'''
     '''if''' l1^.w < l2^.w '''then''' '''begin'''            //jeśli l1^.w < l2^.w
     '''if''' l1^.w < l2^.w '''then''' '''begin'''            //jeśli l1^.w < l2^.w
       akt^.nast:=l1;
       akt^.nast:=l1;
Linia 67: Linia 71:
         l2:=l2^.nast;
         l2:=l2^.nast;
       '''end'''
       '''end'''
       '''else''' '''begin'''                          //jeśli l1^.w = l2^.w
       '''else''' '''begin'''                          //jeśli l1^.w = l2^.w - ten else można sobie darować, i tak będzie dobrze
         akt^.nast:=l1;
         akt^.nast:=l1;
         akt:=akt^.nast;
         akt:=akt^.nast;
Linia 75: Linia 79:
         l2:=l2^.nast;
         l2:=l2^.nast;
       '''end''';
       '''end''';
   '''if''' l1 = nil '''then''' l1:=l2;
   '''if''' l1 = nil '''then'''                       //obsługa końcówki listy która nie jest pusta
  '''while''' l1 <> nil '''do''' '''begin'''              //obsługa końcówki listy która nie jest pusta
     akt^.nast:=l2
     akt^.nast:=l1;
  '''else'''
     akt:=akt^.nast;
     akt^.nast:=l1;                          
    l1:=l1^.nast;
  '''end''';
   Scal:=atrapa^.nast;
   Scal:=atrapa^.nast;
   dispose(atrapa);
   dispose(atrapa);
Linia 91: Linia 93:


</div>
</div>
</div>}}
</div>
 
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
{{cwiczenie| 1|pytanko 1|<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Ćwiczenie</span>
<div class="mw-collapsible-content" style="display:none">
Czy instrukcja atrapa^.nast:=nil jest potrzebna? W jakich przypadkach ?
Czy instrukcja atrapa^.nast:=nil jest potrzebna? W jakich przypadkach ?
</div>
</div>
</div>}}
</div>


== Zadanie 3 (Usuwanie elementów zadanych listą)==
== Zadanie 3 (Usuwanie elementów zadanych listą)==
Napisz procedurę Usuń(var l1:lista; l2:lista) która  usunie z listy l1 wszystkie elementy z listy l2. Zakładamy, że listy l1 i l2 są  posortowanych niemalejąco.
Napisz procedurę Usuń(var l1:lista; l2:lista) która  usunie z listy l1 wszystkie elementy z listy l2. Zakładamy, że listy l1 i l2 są  posortowane niemalejąco.
 
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
{{rozwiazanie| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span>
<div class="mw-collapsible-content" style="display:none">
  '''procedure''' Usuń(var l1:lista; l2:lista);
  '''procedure''' Usuń(var l1:lista; l2:lista);
  //Usuwamy z listy l1 wszystkie elementy z listy l2; zakładamy, że listy l1 i l2 są posortowane niemalejąco
  //Usuwamy z listy l1 wszystkie elementy z listy l2; zakładamy, że listy l1 i l2 są posortowane niemalejąco
Linia 109: Linia 113:
   atrapa^.nast:=l1;
   atrapa^.nast:=l1;
   poprz:=atrapa;
   poprz:=atrapa;
   '''while''' l1 <> nil and l2 <> nil '''do'''
   '''while''' (l1 <> nil) and (l2 <> nil) '''do'''
     '''if''' l1^.w < l2^.w '''then''' '''begin'''        //jeśli l1^.w < l2^.w  
     '''if''' l1^.w < l2^.w '''then''' '''begin'''        //jeśli l1^.w < l2^.w  
       l1:=l1^.nast;
       l1:=l1^.nast;
Linia 132: Linia 136:


</div>
</div>
</div>}}
</div>
 
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
{{cwiczenie| 1|pytanko 1|<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Ćwiczenie</span>
<div class="mw-collapsible-content" style="display:none">
Czy lista l1 musi być przekazywana przez zmienną ? W jakich przypadkach jest to konieczne ?
Czy lista l1 musi być przekazywana przez zmienną ? W jakich przypadkach jest to konieczne ?
</div>
</div>
</div>}}
</div>


== Zadanie 4 (Uporządkowanie elementów w liście)==
== Zadanie 4 (Uporządkowanie elementów w liście)==
Napisz procedurę Uporządkuj(var l:lista) która  przestawi elementy w liście l tak by najpierw były elementy w których pole w jest ujemne, potem równe zero, a na końcu dodatnie. Dodatkowo względna kolejność elelmentów jednego rodzaju (dodatnich, równych zero i ujemnych) powinna być zachowana.
Napisz procedurę Uporządkuj(var l:lista) która  przestawi elementy w liście l tak by najpierw były elementy w których pole w jest ujemne, potem równe zero, a na końcu dodatnie. Dodatkowo względna kolejność elementów jednego rodzaju (dodatnich, równych zero i ujemnych) powinna być zachowana.
 
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
{{rozwiazanie| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span>
<div class="mw-collapsible-content" style="display:none">
  '''procedure''' Uporządkuj(var l:lista);
  '''procedure''' Uporządkuj(var l:lista);
  //Ustawiamy elementy listy l tak by najpierw były elemnty ujemne, potem równe zero, a na końcu dodatnie
  //Ustawiamy elementy listy l tak by najpierw były elementy ujemne, potem równe zero, a na końcu dodatnie
  //Osobno zbieramy elementy ujemne, dodatnie i rowne zero i potem je łączymy
  //Osobno zbieramy elementy ujemne, dodatnie i równe zero i potem je łączymy
  '''var''' atrapau, atrapaz, atrapad, u, z, d : lista;
  '''var''' atrapau, atrapaz, atrapad, u, z, d : lista;
  '''begin'''
  '''begin'''
Linia 182: Linia 188:


</div>
</div>
</div>}}
</div>


== Zadanie 5 (Problem Józefa Flawiusza)==
== Zadanie 5 (Problem Józefa Flawiusza)==
Linia 188: Linia 194:
k > 0 i niepustej cyklicznej listy l, cyklicznie usuwa co k-ty element listy l, aż pozostanie w niej tylko jeden element. Liczenie rozpoczynamy od elementu wskazywanego przez l.
k > 0 i niepustej cyklicznej listy l, cyklicznie usuwa co k-ty element listy l, aż pozostanie w niej tylko jeden element. Liczenie rozpoczynamy od elementu wskazywanego przez l.


{{rozwiazanie| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span>
<div class="mw-collapsible-content" style="display:none">
  '''procedure''' Flawiusz(var l:lista; k:integer);
  '''procedure''' Flawiusz(var l:lista; k:integer);
  //Usuwamy z listy l cyklicznie co k-ty element dopóki nie zostanie jeden element; k>0, l niepusta cykliczna
  //Usuwamy z listy l cyklicznie co k-ty element dopóki nie zostanie jeden element; k>0, l niepusta cykliczna
Linia 195: Linia 203:
   poprz:=l^.nast;
   poprz:=l^.nast;
   '''while''' poprz^.nast <> l '''do''' poprz:=poprz^.nast;      //poprz wskazuje na element poprzedzający l
   '''while''' poprz^.nast <> l '''do''' poprz:=poprz^.nast;      //poprz wskazuje na element poprzedzający l
   '''while''' poprz <> poprz^.nast '''do'''                     //dopóki lista ma więcej niz jeden element
   '''while''' poprz <> poprz^.nast '''do''' '''begin'''              //dopóki lista ma więcej niz jeden element
     '''for''' i:=1 '''to''' k-1 '''do''' '''begin'''
     '''for''' i:=1 '''to''' k-1 '''do''' poprz:=poprz^.nast;
      poprz:=poprz^.nast;
       pom:=poprz^.nast;
       pom:=poprz^.nast;
      poprz^.nast:=pom^.nast;
    poprz^.nast:=pom^.nast;
      dispose(pom);     
    dispose(pom);     
    '''end''';
  '''end''';
   l:=poprz;
   l:=poprz;
  '''end''';
  '''end''';
Linia 209: Linia 216:


</div>
</div>
</div>}}
</div>


== Zadanie 6 (Listy łączące się)==
== Zadanie 6 (Listy łączące się)==
Dane są dwie listy proste (kończące się nilami). Napisz funkcję stwierdzającą czy te listy mają jakiś wspólny element (nie wartość typu integer, a element typu el_listy).
Dane są dwie listy proste (kończące się nilami). Napisz funkcję stwierdzającą czy te listy mają jakiś wspólny element (nie wartość typu integer, a element typu el_listy).
 
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
{{wskazowka| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka</span>
<div class="mw-collapsible-content" style="display:none">
Jeśli listy mają wspólny element to ostatni niepusty element l1 i ostatni niepusty element l2 muszą być takie same.
Jeśli listy mają wspólny element to ostatni niepusty element l1 i ostatni niepusty element l2 muszą być takie same.
</div>
</div>
</div>
</div>
}}
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
 
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span>
{{rozwiazanie| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible-content" style="display:none">
  '''function''' Wspólny(l1, l2:lista):boolean;
  '''function''' Wspólny(l1, l2:lista):boolean;
  //Sprawdzamy czy listy proste l1 i l2 maja wspólny element
  //Sprawdzamy czy listy proste l1 i l2 maja wspólny element
Linia 238: Linia 246:
''Koszt pamięciowy'': stały
''Koszt pamięciowy'': stały
</div>
</div>
</div>}}
</div>


== Zadanie 7 (Pierwszy wspólny element list łączących się)==
== Zadanie 7 (Pierwszy wspólny element list łączących się)==
Dane są dwie listy proste (kończące się nilami) i takie że maja one element wspólny (funkcja Wspólny z poprzedniego zadania dałaby wynik true). Napisz funkcję odnajdującą pierwszy element wspólny tych list.
Dane są dwie listy proste (kończące się nilami) i takie że maja one element wspólny (funkcja Wspólny z poprzedniego zadania dałaby wynik true). Napisz funkcję odnajdującą pierwszy element wspólny tych list.
 
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
{{wskazowka| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka</span>
<div class="mw-collapsible-content" style="display:none">
Każdy wspólny element list jest tak samo odległy od końca list. Jeśli więc obliczymy długości list to możemy iść po nich równocześnie w takiej samej odległości od końca i sprawdzać czy trafiliśmy już na wspólny element czy nie.
Każdy wspólny element list jest tak samo odległy od końca list. Jeśli więc obliczymy długości list to możemy iść po nich równocześnie w takiej samej odległości od końca i sprawdzać czy trafiliśmy już na wspólny element czy nie.
</div>
</div>
</div>
</div>
}}


{{rozwiazanie| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span>
<div class="mw-collapsible-content" style="display:none">
  '''function''' PierwszyWspólny(l1, l2:lista):lista;
  '''function''' PierwszyWspólny(l1, l2:lista):lista;
  //Listy l1 i l2 maja wspólny element; szukamy pierwszego elementu wspólnego tych list
  //Listy l1 i l2 maja wspólny element; szukamy pierwszego elementu wspólnego tych list
Linia 277: Linia 287:
''Koszt pamięciowy'': stały
''Koszt pamięciowy'': stały
</div>
</div>
</div>}}
</div>


{{cwiczenie| 1|pytanko 1|<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Ćwiczenie</span>
<div class="mw-collapsible-content" style="display:none">
Skąd wiadomo, że w ostatnim while'u l1 i l2 sa zawsze różne od nil ?
Skąd wiadomo, że w ostatnim while'u l1 i l2 sa zawsze różne od nil ?
</div>
</div>
</div>}}
</div>


== Zadanie 8 (Listy z cyklem)==
== Zadanie 8 (Listy z cyklem)==
Napisz funkcje która sprawdzi czy dana l typu lista jest listą prostą czy też listą z cyklem.  
Napisz funkcję która sprawdzi czy dana l typu lista jest listą prostą czy też listą z cyklem.  


{{wskazowka| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka</span>
<div class="mw-collapsible-content" style="display:none">
Wystarczy poruszać sie po liście dwoma wskaźnikami o dwóch różnych względnie pierwszych prędkościach; wtedy albo trafimy szybszym wskaźnikiem na nil albo oba wskaźniki się zejdą.
Wystarczy poruszać sie po liście dwoma wskaźnikami o dwóch różnych względnie pierwszych prędkościach; wtedy albo trafimy szybszym wskaźnikiem na nil albo oba wskaźniki się zejdą.
</div>
</div>
</div>
</div>
}}


{{rozwiazanie| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span>
<div class="mw-collapsible-content" style="display:none">
  '''function''' ListaZCyklem(l:lista):boolean;
  '''function''' ListaZCyklem(l:lista):boolean;
  //Sprawdzamy czy lista l jest listą z cyklem, czy tez kończy się nilem
  //Sprawdzamy czy lista l jest listą z cyklem, czy tez kończy się nilem
Linia 311: Linia 326:
''Koszt pamięciowy'': stały
''Koszt pamięciowy'': stały
</div>
</div>
</div>}}
</div>


== Zadanie 9 (Długość cyklu w liście z cyklem)==
== Zadanie 9 (Długość cyklu w liście z cyklem)==
Napisz funkcje która dla danej listy z cyklem obliczy długość cyklu.
Napisz funkcję która dla danej listy z cyklem obliczy długość cyklu.


{{wskazowka| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka 1</span>
<div class="mw-collapsible-content" style="display:none">
Można poruszać sie po liście dwoma wskaźnikami tak jak w zadaniu poprzednim; gdy wskaźniki sie zejdą to znaczy, że jesteśmy na cyklu; wystarczy zatrzymać jeden wskaźnik a drugim obejść cykl i obliczyć jego długość.  
Można poruszać sie po liście dwoma wskaźnikami tak jak w zadaniu poprzednim; gdy wskaźniki sie zejdą to znaczy, że jesteśmy na cyklu; wystarczy zatrzymać jeden wskaźnik a drugim obejść cykl i obliczyć jego długość.  
</div>
</div>
</div>
</div>
}}
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
 
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie 1</span>
{{rozwiazanie| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible-content" style="display:none">
  '''function''' DługośćCyklu1(l:lista):integer;
  '''function''' DługośćCyklu1(l:lista):integer;
  //Obliczamy długość cyklu dla listy z cyklem
  //Obliczamy długość cyklu dla listy z cyklem
Linia 347: Linia 364:
''Koszt pamięciowy'': stały
''Koszt pamięciowy'': stały
</div>
</div>
</div>}}
</div>
 


{{wskazowka| 2||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka 2</span>
<div class="mw-collapsible-content" style="display:none">
Jeśli przechodząc po liście z cyklem będziemy ją odwracać to dojdziemy do początku; odwiedzimy przy tym 2m+n elementów gdzie n to długość cyklu a m to liczba elementów poza cyklem. Wtedy (2m+n div 2)-ty element leży na cyklu i poczynając od niego można obliczyć długość cyklu.
Jeśli przechodząc po liście z cyklem będziemy ją odwracać to dojdziemy do początku; odwiedzimy przy tym 2m+n elementów gdzie n to długość cyklu a m to liczba elementów poza cyklem. Wtedy (2m+n div 2)-ty element leży na cyklu i poczynając od niego można obliczyć długość cyklu.
</div>
</div>
</div>
</div>
}}
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
 
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie 2</span>
{{rozwiazanie| 2||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible-content" style="display:none">
  '''function''' DługośćCyklu2(l:lista):integer;
  '''function''' DługośćCyklu2(l:lista):integer;
  //Obliczamy długość cyklu dla listy z cyklem
  //Obliczamy długość cyklu dla listy z cyklem
Linia 385: Linia 405:
''Koszt pamięciowy'': stały
''Koszt pamięciowy'': stały
</div>
</div>
</div>}}
</div>

Aktualna wersja na dzień 21:52, 28 maj 2020

To są zadania na listy.

Oglądaj wskazówki i rozwiązania __SHOWALL__
Ukryj wskazówki i rozwiązania __HIDEALL__

W poniższych zadaniach będziemy używać następujących typów:

type lista = ^el_listy;
     el_listy = record
                  w: integer;
                  nast: lista;
                end;


Zadanie 1 (Odwracanie listy)

Napisz procedurę Odwróć(var l:lista) odwracającą listę l.

Rozwiązanie 1

Zadanie 2 (Scalanie dwóch posortowanych list)

Napisz funkcję Scal(l1,l2:lista):lista scalającą dwie posortowane niemalejąco listy l1 i l2, tak aby wynikowa lista również była posortowana niemalejąco.

Rozwiązanie

Ćwiczenie

Zadanie 3 (Usuwanie elementów zadanych listą)

Napisz procedurę Usuń(var l1:lista; l2:lista) która usunie z listy l1 wszystkie elementy z listy l2. Zakładamy, że listy l1 i l2 są posortowane niemalejąco.

Rozwiązanie

Ćwiczenie

Zadanie 4 (Uporządkowanie elementów w liście)

Napisz procedurę Uporządkuj(var l:lista) która przestawi elementy w liście l tak by najpierw były elementy w których pole w jest ujemne, potem równe zero, a na końcu dodatnie. Dodatkowo względna kolejność elementów jednego rodzaju (dodatnich, równych zero i ujemnych) powinna być zachowana.

Rozwiązanie

Zadanie 5 (Problem Józefa Flawiusza)

Napisz procedurę Flawiusz(var l:lista; k:integer), która dla danego k > 0 i niepustej cyklicznej listy l, cyklicznie usuwa co k-ty element listy l, aż pozostanie w niej tylko jeden element. Liczenie rozpoczynamy od elementu wskazywanego przez l.

Rozwiązanie

Zadanie 6 (Listy łączące się)

Dane są dwie listy proste (kończące się nilami). Napisz funkcję stwierdzającą czy te listy mają jakiś wspólny element (nie wartość typu integer, a element typu el_listy).

Wskazówka

Rozwiązanie

Zadanie 7 (Pierwszy wspólny element list łączących się)

Dane są dwie listy proste (kończące się nilami) i takie że maja one element wspólny (funkcja Wspólny z poprzedniego zadania dałaby wynik true). Napisz funkcję odnajdującą pierwszy element wspólny tych list.

Wskazówka

Rozwiązanie

Ćwiczenie

Zadanie 8 (Listy z cyklem)

Napisz funkcję która sprawdzi czy dana l typu lista jest listą prostą czy też listą z cyklem.

Wskazówka

Rozwiązanie

Zadanie 9 (Długość cyklu w liście z cyklem)

Napisz funkcję która dla danej listy z cyklem obliczy długość cyklu.

Wskazówka 1

Rozwiązanie 1


Wskazówka 2

Rozwiązanie 2