Advertisement
DilyaraL

16.26

Apr 25th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4.  
  5.  
  6. struct node
  7. {
  8. int info;
  9. node * next;
  10. };
  11. void setNull(node * & p)
  12. {
  13. p = NULL;
  14. }
  15. void createElem(node * & p, int y)
  16. {
  17. p = new node;
  18. p->info = y;
  19. p->next = NULL;
  20. }
  21. void addFirst(node * & head1, node * p)//добавление в начало
  22. {
  23. p->next = head1;
  24. head1 = p;
  25. }
  26. void createListFromFile(node * & head1, ifstream & f)
  27. {
  28. node * q;
  29. int x;
  30. setNull(head1);
  31. while (f >> x)
  32. {
  33. createElem(q, x);
  34. addFirst(head1, q);
  35. }
  36. }
  37. void setHead(node * head1, node * & p)
  38. {
  39. p = head1;
  40. }
  41. bool nodeIsNull(node * p)
  42. {
  43. return p == NULL;
  44. }
  45. void showNode(node * p)
  46. {
  47. cout << p->info << ' ';
  48. }
  49. void moove(node * & p)
  50. {
  51. p = p->next;
  52. }
  53. void showList(node * head)
  54. {
  55. node * q;
  56. setHead(head, q);
  57. while (!nodeIsNull(q))
  58. {
  59. showNode(q);
  60. moove(q);
  61. }
  62. cout << endl;
  63. }
  64.  
  65. bool listIsEmpty(node * head1)
  66. {
  67. return head1 == NULL;
  68. }
  69. bool compInfo(node * p1, node * p2)
  70. {
  71. return p1->info == p2->info;
  72. }
  73.  
  74. node* taskA(node * &head1, node * &head2)
  75. {
  76. node * q1, *q2, *head3= new node,*q3,*temp;
  77. setHead(head1, q1);
  78. setHead(head2, q2);
  79. if (!nodeIsNull(head1) && !nodeIsNull(head2))
  80. {
  81. if (q1->info > q2->info)//
  82. {
  83. head3->info = q2->info;
  84. moove(q2);
  85. }
  86. else
  87. {
  88. head3->info = q1->info;
  89. moove(q1);
  90. }
  91. setHead(head3, q3);
  92. setHead(head3, temp);
  93. while (!nodeIsNull(q1) && !nodeIsNull(q2))
  94. {
  95. while (!nodeIsNull(q2) && q1->info > q2->info)
  96. {
  97. temp = q3;
  98. createElem(q3, q2->info);
  99. temp->next = q3;
  100. moove(q2);
  101. }
  102. while (!nodeIsNull(q1) && q1->info <= q2->info)
  103. {
  104. temp = q3;
  105. createElem(q3, q1->info);
  106. temp->next = q3;
  107. moove(q1);
  108. }
  109. }
  110. while (!nodeIsNull(q1))//дозаписываем
  111. {
  112. temp = q3;
  113. createElem(q3, q1->info);
  114. temp->next = q3;
  115. moove(q1);
  116. }
  117. while (!nodeIsNull(q2))//дозаписываем
  118. {
  119. temp = q3;
  120. createElem(q3, q2->info);
  121. temp->next = q3;
  122. moove(q2);
  123. }
  124. return head3;
  125. }
  126. else
  127. {
  128. if (!nodeIsNull(head1))
  129. return head1;
  130. else if (!nodeIsNull(head2))
  131. return head2;
  132. else return NULL;
  133. }
  134.  
  135. }
  136.  
  137. node* taskB(node * &head1, node * &head2)
  138. {
  139. node * q1, *q2, *q3, *temp, *head;
  140. setHead(head1, q1);
  141. setHead(head2, q2);
  142. if (!nodeIsNull(head1) && !nodeIsNull(head2))
  143. {
  144. if (q1->info > q2->info)
  145. {
  146. q3 = q2;
  147. moove(q2);
  148. }
  149. else
  150. {
  151. q3 = q1;
  152. moove(q1);
  153. }
  154. head = q3;
  155. while (!nodeIsNull(q1) && !nodeIsNull(q2))
  156. {
  157. while (!nodeIsNull(q2) && q1->info > q2->info)
  158. {
  159. q3->next = q2;
  160. q3 = q2;
  161. moove(q2);
  162. }
  163. while (!nodeIsNull(q1) && q1->info <= q2->info)
  164. {
  165. q3->next = q1;
  166. q3 = q1;
  167. moove(q1);
  168. }
  169. }
  170. while (!nodeIsNull(q1))//дозаписываем
  171. {
  172. q3->next = q1;
  173. q3 = q1;
  174. moove(q1);
  175. }
  176. while (!nodeIsNull(q2))//дозаписываем
  177. {
  178. q3->next = q2;
  179. q3 = q2;
  180. moove(q2);
  181. }
  182. return head;
  183. }
  184. else
  185. {
  186. if (!nodeIsNull(head1))
  187. return head1;
  188. else if (!nodeIsNull(head2))
  189. return head2;
  190. else return NULL;
  191. }
  192.  
  193. }
  194.  
  195. int main()
  196. {
  197. ifstream f("Text.txt");
  198. node * head1, *head3;
  199. createListFromFile(head1, f);
  200. showList(head1);
  201.  
  202. ifstream g("Text1.txt");
  203. node * head2;
  204. createListFromFile(head2, g);
  205. showList(head2);
  206.  
  207. showList(taskB(head1, head2));
  208.  
  209. system("pause");
  210. return 0;
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement