Listy - zadania

We wszystkich zadaniach wykorzystywana jest struktura:

struct elListy{
  int wart;
  struct elListy *nast;
}
 
 

Napisz funkcję:


Zadanie 1

struct elListy *odwroc(struct elListy *l)

która odwróci kolejność elementów listy.
Wynikiem funkcji ma być odwrócona lista l.


Zadanie 2

struct elListy *usun(struct elListy *l, int k)

która z listy l usunie element znajdujący się na pozycji k.
Wynikiem funkcji ma być lista l po usunięciu elementu.


Zadanie 3 za proste na prace domowa!!!

struct elListy *usun(struct elListy *l, int k)

która z listy l usunie
a) pierwszy element z wartością równą k.
b) wszystkie elementy o wartościach równych k.
Wynikiem funkcji ma być lista l po usunięciu tych elementów.


Zadanie 4

struct elListy *znajdz(struct elListy *l, int k)

która zwróci wskaźnik do pierwszego (ostatniego) elementu z listy l, który przechowuje wartość równą k.
Jeżeli takiego elementu nie ma, to funkcja ma zwrócić NULL.
a) kolejne wartości listy nie są uporządkowane
b) kolejne wartości listy są uporządkowane niemalejąco
c) kolejne wartości listy są uporządkowane nierosnąco


Zadanie 5

struct elListy *znajdzMin(struct elListy *l)

która zwróci wskaźnik do elementu z listy l, przechowującego najmniejszą wartość.


Zadanie 6

struct elListy *znajdzMax(struct elListy *l)

która zwróci wskaźnik do elementu z listy l, przechowującego największą wartość.


Zadanie 7

struct elListy *wstaw(struct elListy *l, int k)

która wstawi do listy l element z wartością równą k, tak aby porządek listy nie został zakłocony, czyli lista ma pozostać listą uporządkowaną
a) niemalejąco
b) nierosnąco
Wynikiem funkcji ma być lista l po wstawieniu elementu.


Zadanie 8

struct elListy *wstaw(struct elListy *l, struct elListy *k)

która wstawi do listy l element k
a) na początku listy
b) na końcu listy
Wynikiem funkcji ma być lista l po wstawieniu elementu.


Zadanie 9 duzo za proste na prace domowa!!!

struct elListy *pobierz(struct elListy **l)

która zwróci wskaźnik do elemenetu będącego
a) na początku listy
b) na końcu listy
a listę l zmodyfikuje tak, że nie będzie już zawierała tego elementu.


Zadanie 10

struct elListy *usun (struct elListy *l, int k)

która z listy l usunie wszystkie elementy o wartościach mniejszych od k.
Wynikiem funkcji ma być lista l po usunięciu tych elementów.


Zadanie 11

struct elListy *usun (struct elListy *l)

która usunie z posortowanej niemalejąco listy l powtarzające się elementy,  tak aby powstała lista uporządkowana rosnąco.
Usunięte elementy mają zostać wstawione do nowej listy, którą funkcja ma zwrócić na wyjściu.
Na przykład jeśli lista zawiera wartości:
3, 3, 5, 6, 7, 7, 7, 8,
to po modyfikacji powinno zostać:
3, 5, 6, 7, 8,
wyjściowa lista zawiera liczby: 3, 7, 7.


Zadanie 12

struct elListy *merge(struct elListy *l1, struct elListy *l2)

która połączy dwie listy (l1 i l2) uporządkowane niemalejąco w jedną listę,
która będzie uporządkowana:
a) również niemalejącą
b) uporządkowana nierosnąco.
Wynikiem funkcji ma być nowo utworzona lista.


Zadanie 13 za proste na prace domowa jesli trzymamy wskaznik do ostatniego elementu!!! Ale jesli mamy wskaznik tylko do glowy to bardzo ciekawe zadanie!

int czyNull (struct elListy *l)

która sprawdzi czy lista konczy się NULL'em i zwróci odpowiednią wartość logiczną.
np: lista

7-->2-->5-->4
    ^       |
    +-------+

nie kończy się NULL'em, bo wskaźnik nast z czwórki wskazuje na dwójkę.
UWAGA: Lista może zostać zmodyfikowana.