fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. struct Node
  4. {
  5. int data;
  6. Node *next;
  7. };
  8. class Link
  9. {
  10. public:
  11. Node *head;
  12. int size;
  13. Link()
  14. {
  15. head = 0;
  16. size = 0;
  17. }
  18. void Insert(int val)
  19. {
  20. Node *nn = new Node;
  21. if (head == 0)
  22. {
  23. nn->data = val;
  24. head = nn;
  25. nn->next = 0;
  26. size++;
  27. return;
  28. }
  29. Node *t = head;
  30. nn->data = val;
  31.  
  32. while (t->next)
  33. {
  34. t = t->next;
  35. }
  36. t->next = nn;
  37. nn->next = 0;
  38. size++;
  39. }
  40. void addfirst(int val)
  41. {
  42. Node *nn = new Node;
  43. nn->next = head;
  44. head = nn;
  45. nn->data = val;
  46. size++;
  47. }
  48. void Insert(int val, int pos)
  49. {
  50. if (pos == 1)
  51. {
  52. Node *nn = new Node;
  53. nn->data = val;
  54. nn->next = head;
  55. head = nn;
  56. size++;
  57. }
  58. else if (pos == (size + 1))
  59. {
  60. Node *nn = new Node;
  61.  
  62. nn->data = val;
  63. Node *t = head;
  64. while (t->next)
  65. {
  66. t = t->next;
  67. }
  68. t->next = nn;
  69. nn->next = 0;
  70. size++;
  71. }
  72. else
  73. {
  74. Node *nn = new Node;
  75. nn->data = val;
  76. Node *prev = head;
  77. Node *cur;
  78. for (int i = 1; i <= pos - 2; i++)
  79. {
  80. prev = prev->next;
  81. }
  82. cur = prev->next;
  83. nn->next = prev->next;
  84. prev->next = nn;
  85. size++;
  86. }
  87. }
  88. void Delete(int pos)
  89. {
  90. Node *prev = head;
  91. Node *cur;
  92.  
  93. for (int i = 1; i <= pos - 2; i++)
  94. {
  95. prev = prev->next;
  96. }
  97. if (size == 1 and pos == 1)
  98. {
  99. head = 0;
  100. delete prev;
  101. }
  102. if (pos == 1)
  103. {
  104. Node *t = head;
  105. head = prev->next;
  106. delete t;
  107. size--;
  108. return;
  109. }
  110.  
  111. cur = prev->next;
  112. prev->next = cur->next;
  113. delete cur;
  114. size--;
  115. }
  116. void Print()
  117. {
  118. Node *t = head;
  119. if (size == 0)
  120. {
  121. cout << "NO value" << endl;
  122. return;
  123. }
  124. while (t)
  125. {
  126. cout << t->data << " ";
  127. t = t->next;
  128. }
  129. cout << endl;
  130. }
  131. };
  132. int main()
  133. {
  134. Link l1, l2;
  135. for (int i = 1; i <= 3; i++)
  136. {
  137. int x;
  138. cin >> x;
  139. l1.Insert(x);
  140. }
  141. for (int i = 1; i <= 3; i++)
  142. {
  143. int x;
  144. cin >> x;
  145. l2.Insert(x);
  146. }
  147. l1.Print();
  148. l2.Print();
  149. Node *t1 = l2.head;
  150. while (t1)
  151. {
  152. l1.Insert(t1->data);
  153. t1 = t1->next;
  154. }
  155. //after merge
  156. l1.Print();
  157.  
  158. return 0;
  159. }
  160.  
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
21889 21889 21889 
21889 21889 21889 
21889 21889 21889 21889 21889 21889