Você está na página 1de 2

#include <cstdlib> #include <iostream> using namespace std; struct nod{ int val; nod *urm,*ant; }; void init(nod

*&cap){ cap=NULL;} void inserare_prim(nod *&cap, nod *val){ if(cap==NULL){ cap=val; cap->urm=NULL; cap->ant=NULL; return; } val->urm=cap; cap->ant=val; cap=val; cap->ant=NULL; } void afiseaza_c(nod *cap){ if(cap==NULL){ cout<<"\nLista este goala."; return; } while(cap){ cout<<cap->val<<" "; cap=cap->urm; } } // afisare inversa de la ult la cap void afiseaza_i(nod *cap){ if(cap==NULL){ cout<<"\nLista este goala."; return; } /* // pas.1 : pozitionare pe ult elem nod *p = cap; while(p->urm) p=p->urm; // verif, afisez cheia elem crt cout << p->val; // parcurg invers */ for(nod *p=cap;p!=NULL;p=p->urm){ nod *r; if(p->urm==NULL){ for(r=p; r!=NULL; r=r->ant) cout<<r->val<<" "; } } } nod *citire(){

nod *p; p=new nod; cout<<"Valoare:"; cin>>p->val; p->urm=NULL; p->ant=NULL; return p; } void inserare_ult(nod *&cap, nod *val){ if(cap==NULL) { cap=val; cap->urm=NULL; cap->ant=NULL; } nod *p; p=cap; nod *a; while(p->urm) p=p->urm; p->urm=val; val->urm=NULL; val->ant=p;

} int main(int argc, char *argv[]) { nod *cap1, *cap2; init(cap1); init(cap2); int n=4; while(n--){ inserare_prim(cap1, citire()); } afiseaza_c(cap1); cout<<"\n---------------\n"<<endl; afiseaza_i(cap1); inserare_ult(cap1, citire()); afiseaza_c(cap1); system("PAUSE"); return EXIT_SUCCESS; }

Você também pode gostar