Sunteți pe pagina 1din 2

LP

L A B O R A T O R 12

Liste inlantuite

A. Exemplu de definire si afisare a unei liste cu pointeri

#include <stdio.h>
#include <stdlib.h>
/* definire element lista */
typedef struct slist {
int val; /* camp de date */
struct slist *leg; /* camp de legatura */
} elem, * list;

/* afisare lista */
void prntlst ( list pl) {
while (pl != NULL) {
printf("%d ",pl->val); /* afisare date */
pl = pl->leg; /* avans la elem. urmator */
}
}
/* alte operatii cu liste */
. . .
/* creare si afisare lista */
void main ()
{ list lst ; int x;
/* crearea primului element */
lst= (list) malloc (sizeof(elem));
lst.val=0; /* o valoare arbitrara */
lst.leg=NULL; /* nu urmeaza nimic */
/* adaugare elemente la sfarsitul listei */
while (scanf("%d",&x) > 0)
append (lst,x); /* adaugare element la lista */
prntlst (lst); /* afisare lista */
}

B. Teme pentru laborator

1. Sa se scrie functia "append" pentru adaugarea unui nou element


cu valoarea "x" la sfarsitul listei cu adresa in "lst" si sa se verifice
intregul program.

2. Sa se scrie o functie "init" pentru initializarea listei prin


crearea unui prim element fara date (element santinela) si sa se apeleze
aceasta functie in programul principal.

3. Sa se modifice programul astfel incat functia de initializare


"init" creaza o lista vida (fara elemente) ( lst=NULL;). Cum trebuie
modificata functia "append".

4. Sa se modifice functia de adaugare a unui element "append"


astfel
ca noul element sa se adauge intr-o pozitie care sa mentina lista
ordonata,
si nu mereu la sfarsitul listei.

5. Sa se modifice din nou functiile de initializare si de adaugare


la o lista ordonata cu element santinela (creat la initializarea
listei).

S-ar putea să vă placă și