Guest User

Untitled

a guest
Jun 24th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.04 KB | None | 0 0
  1. #include<iostream>
  2. #define Max 100;
  3. using namespace std;
  4. struct nod
  5. {
  6. int inf;
  7. int urm;
  8. };
  9. nod lista [Max];
  10. int s[Max],prim=-1,nr,adr;
  11. int exista_spatiu();
  12. void aloca(int&adr);
  13. void elibereaza(int adr);
  14. void adauga(int&prim,int x);
  15. void parcurgere(int prim);
  16. int cautare(int x);
  17. void inserare_inainte (int adr,int x);
  18. void inserare_dupa(int adr,int x);
  19. void stergere(int adr);
  20. int main()
  21. {
  22. int p,opt,x,y;
  23. do
  24. {
  25. cout<<"1:Creare"<<endl;
  26. cout<<"2:Parcurgere"<<endl;
  27. cout<<"3:Cautare"<<endl;
  28. cout<<"4:insereare dupa"<<endl;
  29. cout<<"5:insereare inainte"<<endl;
  30. cout<<"6:stergere"<<endl;
  31. cout<<"7:iesire"<<endl;
  32. cout<<"Optiunea";
  33. cin>>opt;
  34. switch(opt)
  35. {
  36. case 1:cout<<"nod:";
  37. cin>>x;
  38. if(exista_spatiu()) adauga(prim,x);
  39. else
  40. cout<<"nu exista spatiu";
  41. break;
  42. case 2:parcurgere(prim);
  43. break;
  44. case 3:cout<<"nod=";
  45. cin>>x;
  46. p=cautare(x);
  47. if(p!=-1)
  48. cout<<lista[p].inf;
  49. else
  50. cout<<x<<"nu exista";
  51. break;
  52. case 4:cout<<"nodul dupa care se insereaza =";
  53. cin>>x;
  54. p=cautare(x);
  55. if(p!=-1)
  56. {
  57. cout<<"nodul de inserat=";
  58. cin>>y;
  59. if(exista_spatiu())
  60. inserare_dupa(p,y);
  61. else
  62. cout<<"nu exista spatiu";
  63. }
  64. else cout<<"nu exista nodul"<<x;
  65. break;
  66. case 5:cout<<"nodul inaintea caruia se insereaza";
  67. cin>>x;
  68. p=cautare(x);
  69. if(p!=-1)
  70. {
  71. cout<<"nodul de inserat=";
  72. cin>>y;
  73. if(exista_spatiu())
  74. inserare_inainte(p,y);
  75. else
  76. cout<<"nu exista spatiu";
  77. }
  78. else
  79. cout<<"nu exista nodul"<<x;
  80. break;
  81. case 6:cout<<"nod=";
  82. cin>>x;
  83. p=cautare(x);
  84. if(p!=-1)
  85. steregere(p);
  86. else
  87. cout<<"nu exista nodul"<<x;
  88. break;
  89. }
  90. getch();
  91. }
  92. while(opt<7&&opt);
  93. }
  94. int exista_spatiu()
  95. {
  96. if(nr<Max)
  97. return 1;
  98. return 0;
  99. }
  100. void aloca(int&adr)
  101. {
  102. int i=0;
  103. while(s[i])i++;
  104. adr=i;
  105. s[i]=1;nr++;
  106. }
  107. void elibereaza(int adr)
  108. {
  109. s[adr]=0;nr-;
  110. if(adr==prim)
  111. prim=-1;
  112. }
  113. void adauga(int &prim,int x)
  114. {
  115. int p=prim
  116. aloca(adr);
  117. lista[adr].inf=x;
  118. lista[adr].urm=-1;
  119. if(prim==adr-1)
  120. prim=adr;
  121. else
  122. {
  123. while(lista[p].urm!=-1)
  124. p=lista[p].urm;
  125. lista[p].urm=adr;
  126. }
  127.  
  128. }
  129. int cautare(intx)
  130. {
  131. int p=prim;
  132. while(p!=-1&&lista[p].inf!=x)
  133. p=lista[p].urm;
  134. return p;
  135.  
  136. }
  137. void inserare_dupa(int adr,int x)
  138. {
  139. int p;
  140. aloca(p);
  141. lista[p].inf=x;
  142. lista[p].urm=lista[adr].urm;
  143. lista[adr].urm=p;
  144.  
  145. }
  146. void inserare_inainte(int adr,int x)
  147. {
  148. int p;
  149. aloca(p);
  150. lista[p]=lista[adr];
  151. lista[adr].inf=x;
  152. lista[adr].urm=p;
  153.  
  154. }
  155. void parcurgere(int prim);
  156. {
  157. int p=prim;
  158. if(prim==-1)
  159. cout<<"lista vida!";
  160. else
  161. {
  162. while(p!=-1)
  163. {
  164. cout<<lista[p].inf<<" ";
  165. p=lista[p].urm;
  166. }
  167.  
  168. }
  169.  
  170. }
  171. void stergere(int adr)
  172. {
  173. int q,p=lista[adr].urm;
  174. if(p!=-1)
  175. lista[adr]=lista[p];
  176. else
  177. {
  178. q=prim;
  179. p=lista[q].urm;
  180. if(p!=-1)
  181. {
  182. while (lista[p].urm!=-1)
  183. {
  184. q=p;
  185. p=lista[p].urm;
  186. }
  187. else
  188. p=prim;
  189. }
  190.  
  191. elibereaza(p);
  192. }
  193.  
  194. }
Add Comment
Please, Sign In to add comment