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 }