Cuprins
- 1. INTRODUCERE.3
- 2. STRUCTURA PROGRAMULUI.4
- 3. STRUCTURI DE DATE UTILIZATE.5
- 4. DESCRIEREA IMPLEMENTARII OPERATIILOR DE BAZA.6
- 5. CONCLUZII.8
- 6. BIBLIOGRAFIE.9
- 7. ANEXE.10
Extras din proiect
1. INTRODUCERE
Pe baza structurii de date lista dublu inlantuita circulara, se realizeaza un program in limbajul de programare C care sa efectueze asupra acestei structuri operatii specifice de creare a structurii, de actualizare si de stergere a acesteia, cu precizarea ca respectiva lista este ordonata crescator si nu admite informatii redundante.
Aplicaţia a fost realizată în Microsoft Visual Studio 2008 Express Edition. Pentru realizarea proiectului a fost consultată o bibliografie formată din două cărţi.
2. STRUCTURA PROGRAMULUI
Aplicaţia conţine un meniu care permite utilizatorului sa afiseze lista dublu inlantuita circulara, care va fi afisata pe ecran in ordine crescatoare; permite utilizatorului totodata sa adauge un element nou in lista iar odata cu introducerea mai multor elemente consecutiv, la optiunea de afisare a listei, elementele vor fi in ordine crescatoare. In meniu se mai poate alege optiunea de stergere completa a listei si o ultima optiune de iesire din meniu.
3. STRUCTURI DE DATE UTILIZATE
Structura de date utilizata este lista dublu inlantuita circulara.
typedef struct tnod{
int info;
struct tnod *pred;
struct tnod *urm;
}TNOD;
4. DESCRIEREA IMPLEMENTĂRII OPERAŢIILOR DE BAZĂ
1.Adaugarea de elemente
Adauga un nod la o lista dublu inlantuita. Returneaza 1 daca nodul a fost adaugat sau zero daca nu s-a realizat adaugarea.
int adauga(TNOD** al, int v){
NOD *a;
TNOD *l;
l=*al;
a=(TNOD*)malloc(sizeof(TNOD));
if (a==NULL){
printf("nAlocare memorie esuata!n");
return 0; }
a->info=v;
if (l==NULL){
*al=a;
a->urm=a;
a->pred=a;
}
else if ((l->info>a->info)||(l->pred->info<a->info)){
a->urm=l;
a->pred=l->pred;
l->pred->urm=a;
l->pred=a;
if (l->info>a->info) *al=a;
}
else {
while ((l->urm->info<a->info)&&(l->urm!=*al)){
l=l->urm;
}
if (l->urm->info==a->info){
printf("nNodul exista deja!n");
free(a);
return 0;
}
a->urm=l->urm;
Preview document
Conținut arhivă zip
- Lucrul cu Liste Dublu Inlantuite Circulare in C.doc