Documente Academic
Documente Profesional
Documente Cultură
unde value reprezinta valoarea unui elementului ntreg stocata de nod, iar next s, i prev
reprezinta legaturile la nodul umator s, i respectiv la cel anterior.
Definit, ia propriu-zisa a listei se realizeaza pe baza definit, iei nodurilor s, i contine pointerii
catre primul (first) s, i ultimul (last) nod:
1
2
3
4
O lista goala va avea pointeri de first s, i last setat, i la elementul NULL. Operat, iile care
trebuie implementate pentru lucrul cu liste sunt:
create/destroy
insert/delete
isListEmpty
search/contains
Implementarea primelor doua relat, ii sunt prezentate n Sectiunea .
2. Exemplu de program
1
2
3
4
5
6
7
8
#include <stdio.h>
#include <stdlib.h>
// Definitia unui nod din lista
typedef struct ListNode{
int value;
struct ListNode *next;
struct ListNode *prev;
}ListNode;
9
10
11
12
13
14
//Definitia listei
typedef struct List{
ListNode *first;
ListNode *last;
}List;
15
16
17
18
19
20
21
22
23
24
25
26
27
int main(void){
// Creare lista
List* l = createList();
// ....
// Distrugere lista
destroyList(l);
return 0;
}
28
29
30
31
32
33
List* createList(void){
List *newList = (List*)malloc(sizeof(List));
newList->first = newList->last = NULL;
return newList;
}
34
35
36
37
38
while(it != NULL){
aux = it;
it = it->next;
free(aux);
}
free(list);
39
40
41
42
43
44
45
1
2
3
4
5
6
7
8
9
3. Cerint, e
Cerint, a 1 Sa se impletenteze o funct, ie cu numele isListEmpty care verifica daca o lista
cont, ine sau nu elemente. Funct, ia primeste ca parametru o lista s, i ntoarce ntregul 1 daca
lista NU cont, ine elemente s, i ntregul 0 daca lista cont, ine elemente. Funct, ia se va testa n
programul pricipal.
Cerint, a 2 Sa se impletenteze o funct, ie cu numele insertFront care insereaza o valoare
la nceputul listei. Funct, ia primeste ca parametrii o lista s, i un element ntreg (care trebuie
introdus n lista); functia ntoarce nimic. Se va testa funct, ia n programul pricipal.
Cerint, a 3 Sa se impletenteze o funct, ie cu numele deleteFront care sterge o valoare la
nceputul listei. Funct, ia primeste ca parametru lista s, i ntoarce nimic. Se va testa funct, ia
n programul pricipal.
Cerint, a 4 Sa se impletenteze o funct, ie cu numele search care ntoarce un nod din lista
care stocheaza o anumita valoare. Funct, ia primeste lista s, i valoarea ntreaga dupa care se
cauta n lista; funct, ia ntoarce nodul cu valoarea cautata daca acesta exista. Se va testa
funct, ia n programul pricipal.
Cerint, a 5 Sa se impletenteze o funct, ie cu numele contains care verifica daca o anumita
valoare exista ntr-un nod din lista sau nu. Funct, ia are ca parametrii lista s, i valoarea dupa
care se cauta; funct, ia ntoarce 1 daca valoarea exista n lista s, i 0 altfel. Se va testa funct, ia
n programul principal.
Cerint, a 6 - Bonus1 Sa se impletenteze o doua funct, ii similare insertBack/deleteBack
cu cele de la punctele 3 s, i 4 care sa insereze s, i sa stearga elemente de la sfars, itul listei.
Cerint, a 7 - Bonus2 Sa se impletenteze o funct, ie getMid care sa ntoarca valoarea nodului
din mijlocul listei printr-o singur
a parcurgere. Atent, ie la cazul cand lista are un numar
par de elemente, alegerea mijlocului se va face la ntamplare ntre cele doua noduri din mijloc.