Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Satisfactia de a face ce iti place. tutorial, lectii online, solutii simple, exmeple, programe, C++

Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

C


Index » educatie » » informatica » C
Lista liniara dublu inlantuita


Lista liniara dublu inlantuita


Lista liniara dublu inlantuita

O lista liniara dublu inlantuita are o structura de forma :

NULL

inreg1

adr2

adr1

inreg2

adr3

adrn-1

inregn

NULL

adr1

adr2

adrn

unde :

-          adr1, adr2, , adrn reprezinta adresele din memorie a n inregistrari;

-          inreg1, inreg2, , inregn reprezinta informatiile utile din cele n inregistrari.

Primul element din lista, la campul de adresa-stanga, si ultimul element din lista, respectiv, la campul de adresa-dreapta, contin cuvantul cheie NULL.

Operatiile care se pot face cu o lista dublu inlantuita sunt :

1)      crearea listei;

2)      adaugarea unei inregistrari la stanga listei;

3)      adaugarea unei inregistrari la dreapta listei;

4)      adaugarea unei inregistrari in interiorul listei (inserare);

5)      afisarea listei de la stanga la dreapta;

6)      afisarea listei de la dreapta la stanga;

7)      modificarea unei inregistrari;

8)      stergerea unei inregistrari.

In continuare, se prezinta programul lista_dublu_inlantuita care permite crearea unei liste si efectuarea de operatii cu aceasta.

/* Lista dublu inlantuita */

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

struct nod_lista

*p, *u ;

nod_lista *creare_lista( void )

void tiparire_normala(void)

}

void tiparire_inversa(void)

}

nod_lista *adaug_dr(void)

nod_lista *adaug_stg(void)

void inserare(void)

}

while (!ok);

printf('Nr inregistrare adaugata:');

scanf('%d',&n);

adaug=(nod_lista *)malloc(sizeof(nod_lista));

adaug->nr=n;

adaug->adr_stg=c;

adaug->adr_dr=c->adr_dr;

c->adr_dr=adaug;

adaug->adr_dr->adr_stg=adaug;

}

void modif_inregistrare(void)

}

while (!ok);

printf('Nr nou=');scanf('%d',&n);

c->nr=n;

}

void sterge_nod(void)

}

while (!ok);

c->adr_stg->adr_dr=c->adr_dr;

c->adr_dr->adr_stg=c->adr_stg;

if (c == u) u=c->adr_stg;

if (c == p) p=c->adr_dr;

free(c);

}

void main(void)

else

break;

default: printf('nNumar

necorespunzator!');

getch();

}

}

while (!stop);

}






Politica de confidentialitate
C


Access
Adobe photoshop
Autocad
Baze de date
C
Calculatoare
Corel draw
Excel
Foxpro
Html
Internet
Java
Linux
Mathcad
Matlab
Outlook
Pascal
Php
Powerpoint
Retele calculatoare
Sql
Windows
Word

Decodificator - cod sursa
Supraincarcarea constructorilor
Multiple instante pentru aceeasi clasa
Operatorul de atribuire (=)
Definirea structurilor de date
CLASE DERIVATE
Lucrarea de laborator C, C++ probleme
EXPRESII SI INSTRUCTIUNI
Functii operator membre ale claselor
Clase derivate. Mosteniri















 
Copyright © 2019 - Toate drepturile rezervate