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);

}



loading...




Politica de confidentialitate

loading...




Politica de confidentialitate

Copyright © 2019 - Toate drepturile rezervate

Afaceri


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