1. Crearea si parcurgerea Listei Dublu Inlantuite
  2  
  3  #include <iostream>
  4  
  5  using namespace std;
  6  
  7  struct nod
  8  {
  9      nod *ant;
 10      int info;
 11      nod *urm;
 12  };
 13  
 14  nod *prim, *ultim;
 15  
 16  //Crearea listei prin adaugari de noduri la inceputul listei
 17  void Creare_1()
 18  {
 19      int i,n,val;
 20      nod *q;
 21      cout<<"Numarul de noduri="; cin>>n;
 22      for(i=1; i<=n;i++)
 23      {
 24          cout<<"Valoarea din nod= "; cin>>val;
 25          if(prim==NULL)//daca nu avem elemente in lista
 26          {
 27              //cream primul nod
 28              prim=new nod;
 29              prim->info=val;
 30              prim->urm=NULL;
 31              prim->ant=NULL;
 32              ultim=prim;
 33          }
 34          else
 35          {
 36              //adaugam noduri la inceput
 37              q=new nod;//alocam spatiu pentru un nod
 38              q->info=val;//introducem informatia in nod
 39              prim->ant=q;
 40              q->urm=prim;
 41              q->ant=NULL;
 42              prim=q;
 43          }
 44      }
 45  }
 46  
 47  //Afisarea listei prin parcurgere de la inceput la sfarsit
 48  void Afisare_1()
 49  {
 50      nod *q;
 51      q=prim;
 52      while(q!=NULL)
 53      {
 54          cout<<q->info<<" ";
 55          q=q->urm;
 56      }
 57  }
 58  
 59  //Crearea listei prin adaugari de noduri la sfarsitul listei
 60  void Creare_2()
 61  {
 62      int i,n,val;
 63      nod *q;
 64      cout<<"Numarul de noduri="; cin>>n;
 65      for(i=1; i<=n;i++)
 66      {
 67          cout<<"Valoarea din nod= "; cin>>val;
 68          if(prim==NULL)//daca nu avem elemente in lista
 69          {
 70              //cream primul nod
 71              prim=new nod;
 72              prim->info=val;
 73              prim->urm=NULL;
 74              prim->ant=NULL;
 75              ultim=prim;
 76          }
 77          else
 78          {
 79              //adaugam noduri la inceput
 80              q=new nod;//alocam spatiu pentru un nod
 81              q->info=val;//introducem informatia in nod
 82              q->urm=ultim->urm;
 83              q->ant=ultim;
 84              ultim->urm=q;
 85              ultim=q;
 86          }
 87      }
 88  }
 89  
 90  //Afisarea listei prin parcurgere de la sfarsit la inceput
 91  void Afisare_2()
 92  {
 93      nod *q;
 94      q=ultim;
 95      while(q!=NULL)
 96      {
 97          cout<<q->info<<" ";
 98          q=q->ant;
 99      }
100  }
101  int main()
102  {
103  /*
104      Creare_1();
105      Afisare_1();
106  */
107      Creare_2();
108      Afisare_2();
109      return 0;
110  }