Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2018
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. #include<iostream>
  2. #include<conio.h>
  3. using namespace std;
  4.  
  5. struct Nod
  6.  
  7. {int info;
  8. Nod *next,*back;
  9. };
  10.  
  11. Nod *prim, *ultim;
  12.  
  13. void mutaup()
  14. {Nod *u=prim;
  15. while(u->next) u=u->next;
  16. u->back->next=0;
  17. u->back=0;
  18. u->next=prim;
  19. prim->back=u;
  20. prim=u;
  21. }
  22.  
  23. void inter()
  24. {Nod *p=prim,*r,*q,*s;
  25. while(p->next)
  26. {q=p->next;
  27. r=p->back;
  28. s=q->next;
  29. if(r) r->next=q;
  30. q->back=r;
  31. p->next=s;
  32. if(s) s->back=p;
  33. p->back=q;
  34. q->next=p;
  35. if(p==prim) prim=q;
  36. p=p->next;
  37. }
  38. }
  39.  
  40. void creare_lista()
  41.  
  42. {Nod *c;
  43. c=new Nod;
  44. cout<<"info ";
  45. cin>>c->info;
  46. if(!prim)
  47. {prim=c;
  48. prim->next=0;
  49. prim->back=0;
  50. ultim=prim;
  51. }
  52. else
  53. {ultim->next=c;
  54. c->back=ultim;
  55. ultim=c;
  56. ultim->next=0;
  57. }
  58. }
  59.  
  60. void listare_stanga_dreapta()
  61. {Nod *c;
  62. c=prim;
  63. while(c)
  64. {cout<<c->info<<" ";
  65. c=c->next;}
  66. }
  67.  
  68. void listare_dreapta_stanga()
  69. {Nod *c;
  70. c=ultim;
  71. while(c)
  72. {cout<<c->info<<" ";
  73. c=c->back;}
  74. }
  75.  
  76. int main()
  77. {int n,i;
  78. //clrscr();
  79. cout<<"cate elemente va avea lista?";
  80. cin>>n;
  81. for(i=1;i<=n;i++)
  82. creare_lista();
  83. cout<<endl<<"Elementele listei de la stanga la dreapta sunt:"<<endl;
  84. listare_stanga_dreapta();
  85. cout<<endl<<"Elementele listei de la dreapta la stanga sunt:"<<endl;
  86. listare_dreapta_stanga();
  87.  
  88. //mutaup();
  89. //cout<<endl<<"Elementele listei de la stanga la dreapta "<<endl<< "dupa ce a primit ca parametru adresa primului nod al listei"<<endl<<" si a mutat ultimul nod in fata primului sunt:"<<endl;
  90. //cout<<"test"<<endl;
  91. inter();
  92. // !!!INtrodu n impar
  93. cout<<endl<<"Elementele listei de la stanga la dreapta"<<endl<<" dupa ce primeste ca parametru adresa primului nod al listei"<<endl<<" si interschimba primul nod cu cel de-al doilea,"<<endl<<" al treilea cu cel de-al patrulea si asa mai departe sunt:"<<endl;
  94. listare_stanga_dreapta();
  95.  
  96. //cout<<endl<<"Elementele listei de la dreapta la stanga sunt:"<<endl;
  97. //listare_dreapta_stanga();
  98. getch();
  99. return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement