Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




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

inreg



adr

adr

inreg

adr

adrn

inregn

NULL

adr

adr

adrn

unde :

adr , adr , , adrn reprezinta adresele din memorie a n inregistrari;

inreg , inreg , , 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 :

crearea listei;

adaugarea unei inregistrari la stanga listei;

adaugarea unei inregistrari la dreapta listei;

adaugarea unei inregistrari in interiorul listei (inserare);

afisarea listei de la stanga la dreapta;

afisarea listei de la dreapta la stanga;

modificarea unei inregistrari;

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




Copyright © 2024 - Toate drepturile rezervate