Metody Programowania - Lista 4


W zadaniach zakładamy że listy są zadane (reprezentowane poprzez wskaźnik do pierwszego elementu, zaś ostatni element ma zerowy wskaźnik do następnego). Listy są jednokierunkowe, chyba że napisano inaczej.

Zadanie 1

Napisać wersję funkcji `mape' która kończy iterację gdy funkcja `fun' zwraca 0. Wykożystać ją do rozwiązania zadania 6 z listy 3.

Zadanie 2

Zakładamy że elementy meta-listy (listy list) mają następującą deklarację:

struct ls { struct ls *nastepny; int wartosc;}
struct mls { struct mls *nastepny; struct ls *lwartosc;};
Obliczyć (stworzyć) listę sum pól wartość poszczególnych list na meta-liście. Podać rozwiązanie bezpośrednie jak i bazujące na `map' lub `mape'.

Zadanie 3

Spróbować rozwiązać zadania z listy 3 używając do przechodzenia listy funkcji `map' (lub `mape'). W których zadanich są z tym trudności .

Zadanie 4

Napisać funkcję, która mając dane dwie listy liczb całkowitych równej długości stworzy listę par liczb całkowitych.

Zadanie 5

Wielomian (jednej zmiennej) można traktować jako listę par '(współczynnik, wykładnik)' (taka para jednoznacznie wyznacza jednomian: zmienną, np. `x' podnosimy do potęgi podanej przez wykładnik i mnożymy przez współczynnik). Przy tej reprezentacji nie trzeba pamiętać wyrazów z zerowymi współczynnikami (np. `x' do potęgi 1000 reprezentujemu listą jednoelementową). Zakładając że współczynniki i wykładniki reprezentujemy liczbami całkowitymi, jak można wykonać dodawanie i mnożenie takich wielomianów. Oszacować ilość operacji potrzebnych do pomnożenia dwu wielomianów jeśli każdy z nich ma co najwyżej `n' niezerowych wyrazów.