Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.69 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <time.h>
  4. using namespace std;
  5. const int res = -9999999;
  6.  
  7. struct NOT
  8. {
  9. int date;
  10. NOT* next;
  11. };
  12.  
  13. void add(NOT* &NN, int d)
  14. {
  15. NOT* tmp = new NOT;
  16. tmp->date = d;
  17. tmp->next = NN;
  18. NN = tmp;
  19. }
  20.  
  21. void _delete(NOT* &NN, int key)
  22. {
  23. NOT *prev = NULL;
  24. NOT *vsp = NN;
  25. while (vsp->next!=NULL) vsp = vsp->next;
  26. NOT *End = vsp;
  27. if ((NN == End) && (NN!=NULL))
  28. {
  29. NN = NULL;
  30. }
  31. else if (NN!=NULL)
  32. {
  33. vsp = NN;
  34. while (vsp!=NULL)
  35. {
  36. NOT* tmp = vsp->next;
  37. if (vsp->date == key)
  38. {
  39. if (prev)
  40. {
  41. prev->next = vsp->next;
  42. }
  43. delete vsp;
  44. }
  45. else
  46. {
  47. prev = vsp;
  48. }
  49. vsp = tmp;
  50. }
  51. }
  52. }
  53.  
  54. void seek_simillar(NOT* &M, NOT* &M1, NOT* &M2)
  55. {
  56. for (NOT* vsp1 = M1; vsp1!=NULL; vsp1 = vsp1->next)
  57. {
  58. for (NOT* vsp2 = M2; vsp2!=NULL; vsp2 = vsp2->next)
  59. {
  60. if (vsp1->date == vsp2->date)
  61. {
  62. bool k=false;
  63. for (NOT* vsp = M; (vsp!=NULL)&&(k==false); vsp = vsp->next)
  64. {
  65. k = vsp->date == vsp1->date;
  66. }
  67. if (k==false)
  68. {
  69. NOT* tmp = new NOT;
  70. tmp->date = vsp1->date;
  71. tmp->next = M;
  72. M = tmp;
  73. }
  74. }
  75. }
  76. }
  77. }
  78.  
  79. void seek_atleastone(NOT* &M, NOT* &M1, NOT* &M2)
  80. {
  81. for (NOT* vsp1 = M1; vsp1!=NULL; vsp1 = vsp1->next)
  82. {
  83. bool k=false;
  84. for (NOT* vsp = M; (vsp!=NULL)&&(k==false); vsp = vsp->next)
  85. {
  86. k = vsp->date == vsp1->date;
  87. }
  88. if (k==false)
  89. {
  90. NOT* tmp = new NOT;
  91. tmp->date = vsp1->date;
  92. tmp->next = M;
  93. M = tmp;
  94. }
  95. }
  96. for (NOT* vsp2 = M2; vsp2!=NULL; vsp2 = vsp2->next)
  97. {
  98. bool k=false;
  99. for (NOT* vsp = M; (vsp!=NULL)&&(k==false); vsp = vsp->next)
  100. {
  101. k = vsp->date == vsp2->date;
  102. }
  103. if (k==false)
  104. {
  105. NOT* tmp = new NOT;
  106. tmp->date = vsp2->date;
  107. tmp->next = M;
  108. M = tmp;
  109. }
  110. }
  111. }
  112.  
  113. void seek_onenottwo(NOT* &M, NOT* &M1, NOT* &M2)
  114. {
  115. for (NOT* vsp1 = M1; vsp1!=NULL; vsp1 = vsp1->next)
  116. {
  117. bool k=false;
  118. for (NOT* vsp = M; (vsp!=NULL)&&(k==false); vsp = vsp->next)
  119. {
  120. k = vsp->date == vsp1->date;
  121. }
  122. if (k==false)
  123. {
  124. NOT* tmp = new NOT;
  125. tmp->date = vsp1->date;
  126. tmp->next = M;
  127. M = tmp;
  128. }
  129. }
  130. for (NOT* vsp1=M1; vsp1!=NULL; vsp1=vsp1->next)
  131. {
  132. for (NOT* vsp2=M2; vsp2!=NULL; vsp2=vsp2->next)
  133. {
  134. if (vsp1->date == vsp2->date)
  135. {
  136. for (NOT* vsp = M; vsp!=NULL; vsp=vsp->next)
  137. {
  138. if (vsp->date == vsp1->date) vsp->date = res;
  139. }
  140. }
  141. }
  142. }
  143. _delete(M, res);
  144. }
  145.  
  146. void print(NOT* &NN)
  147. {
  148. NOT* vsp = NN;
  149. if (NN == NULL) cout<<"Пусто"<<endl;
  150. else
  151. while (vsp!=NULL)
  152. {
  153. cout << vsp->date << endl;
  154. vsp = vsp->next;
  155. }
  156. }
  157.  
  158. void menu(NOT* &M, NOT* &M1, NOT* &M2)
  159. {
  160. int a;
  161. cout<<"Меню"<<endl<<"1. Элементы входят хотя бы в один из списков M1 и M2"<<endl<<"2. Элементы входят и в M1, и в M2 одновременно"<<endl<<"3. Элементы входят в M1, но не входят в M2"<<endl;
  162. cout<<"Ваш вариант: ";
  163. cin>>a;
  164. switch(a)
  165. {
  166. case (1):
  167. {
  168. seek_atleastone(M, M1, M2);
  169. cout<<"Список M:"<<endl;
  170. print(M);
  171. break;
  172. }
  173. case (2):
  174. {
  175. seek_simillar(M, M1, M2);
  176. cout<<"Список M:"<<endl;
  177. print(M);
  178. break;
  179. }
  180. case (3):
  181. {
  182. seek_onenottwo(M, M1, M2);
  183. cout<<"Список M: "<<endl;
  184. print(M);
  185. break;
  186. }
  187. }
  188. }
  189.  
  190. int main()
  191.  
  192. {
  193. srand(time(0));
  194. setlocale(0, "Rus");
  195. NOT* M = NULL; NOT* M1 = NULL; NOT* M2 = NULL;
  196. for (int i=0; i<5; i++)
  197. {
  198. add(M1, rand()%8);
  199. add(M2, rand()%8);
  200. }
  201. cout <<"Список М1: "<<endl;
  202. print(M1);
  203. cout<<"Список M2: "<<endl;
  204. print(M2);
  205. menu(M, M1, M2);
  206. system("pause");
  207. return 0;
  208. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement