Metody Programowania - Lista 2


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' (z programu przykładowego listy-pr.c ) która kończy iterację gdy funkcja `fun' zwraca 0. Wykorzystać ją do rozwiązania zadania 9 z listy 1.

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 o listach z listy 1 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 daną listę liczb całkowitych i kryterium obliczy sumę liczb spełniających kryterium. Kryterium jest zadane jako wskaźnik do funkcji która bierze jako argument wskaźnik doelementu listy i zwraca 1 jeśli element spełnia kryterium, zaś 0 w przeciwnym razie. Podać rozwiązanie bezpośrednie jak i bazujące na `map' lub `mape'.

Zadanie 5

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

Zadanie 6

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.