Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.45 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. typedef int adresa;
  6.  
  7. struct nod
  8. {
  9. int info;
  10. adresa urm;
  11. };
  12.  
  13. nod L[1000];
  14. int elem=0;
  15. adresa ocupat[1000],v,f;
  16.  
  17. int spatiu()
  18. {
  19. return elem<1000;
  20. }
  21.  
  22. void nadd(adresa &x)
  23. {
  24. adresa i=1;
  25. while (ocupat[i])
  26. i++;
  27. x=1;
  28. ocupat[i]=1;
  29. elem++;
  30. }
  31.  
  32. void ncl(adresa x)
  33. {
  34. ocupat[x]=0;
  35. elem--;
  36. }
  37.  
  38. void add(adresa &v,int val)
  39. {
  40. int c;
  41. if(!v)
  42. {
  43. nadd(v);
  44. L[v].info=val;
  45. L[v].urm=0;
  46. f=v;
  47. }
  48. else
  49. {
  50. if(spatiu())
  51. {
  52. nadd(c);
  53. L[f].urm=c;
  54. L[c].info=val;
  55. L[c].urm=0;
  56. f=c;
  57. }
  58. else cout<<"lipsa spatiu"<<endl;
  59. }
  60. }
  61.  
  62. void addaf(adresa v,int val,int val1)
  63. {
  64. adresa c,d;
  65. if(spatiu ())
  66. {
  67. c=v;
  68. while(L[c].info!=val)
  69. c=L[c].urm;
  70. nadd(c);
  71. L[d].info=val1;
  72. L[d].urm=L[c].urm;
  73. L[c].urm=d;
  74. if(L[d].urm==0)
  75. f=d;
  76. }
  77. else cout<<"lipsa spatiu";
  78. }
  79.  
  80. void addbe(adresa &v,int val,int val1)
  81. {
  82. adresa c,d;
  83. if(spatiu())
  84. if(L[v].info==val)
  85. {
  86. nadd(d);
  87. L[d].info=val1;
  88. L[d].urm=v;
  89. v=d;
  90. }
  91. else
  92. {
  93. c=v;
  94. while(L[L[c].urm].info!=val)
  95. c=L[c].urm;
  96. nadd;
  97. L[d].info=val1;
  98. L[d].urm=L[c].urm;
  99. L[c].urm=d;
  100. }
  101. else cout<<"lipsa spatiu"<<endl;
  102. }
  103.  
  104. void cl (adresa &v,int val)
  105. {
  106. adresa c,man;
  107. if(L[v].info==val)
  108. {
  109. man=v;
  110. v=L[v].urm;
  111. }
  112. else
  113. {
  114. c=v;
  115. while(L[L[c].urm].info!=val)
  116. c=L[c].urm;
  117. man=L[c].urm;
  118. L[c].urm=L[man].urm;
  119. if(man=f)
  120. f=c;
  121. }
  122. ncl(man);
  123. }
  124.  
  125. void out (adresa v)
  126. {
  127. adresa c=v;
  128. while(c)
  129. {
  130. cout<<L[c].info<<" ";
  131. c=L[c].urm;
  132. }
  133. cout<<endl;
  134. }
  135.  
  136. int srch (int x)
  137. {
  138. int p;
  139. while (p&&L[p].info!=x)
  140. p=L[p].urm;
  141. return(p);
  142. }
  143.  
  144. int main()
  145. {
  146. int i;
  147. for(i=1;i<=10;i++)
  148. add(v,i);
  149. out(v);
  150. addaf(v,1,15);
  151. out(v);
  152. addaf(v,10,25);
  153. out(v);
  154. addbe(v,3,44);
  155. out(v);
  156. cl(v,10);
  157. outa(v);
  158. for(i=1;i<=elem;i++)
  159. if(L[i].info%2==0)
  160. cout<<i;
  161. return 0;
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement