Advertisement
Guest User

Untitled

a guest
Nov 11th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.97 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3.  
  4.  
  5. struct ListNode {
  6. int val;
  7. ListNode *next;
  8. ListNode(int x) : val(x), next(nullptr) {}
  9. };
  10.  
  11. int listSize(ListNode* head) {
  12. ListNode* curr = head;
  13. int counter = 1;
  14. while (curr->next != nullptr)
  15. {
  16. curr = curr->next;
  17. counter++;
  18. }
  19. return counter;
  20. }
  21.  
  22. class Solution {
  23. public:
  24.  
  25. ListNode* deleteDuplicates(ListNode* head) {
  26. ListNode*holder = head;
  27. ListNode*curr = head;
  28. ListNode* prev = head;
  29. ListNode*temp = nullptr;
  30. bool flag = false;
  31.  
  32. while (holder->next != nullptr)
  33. {
  34. while (curr->next->next != nullptr)
  35. {
  36. if (holder->val == curr->next->val)
  37. {
  38. flag = true;
  39. temp = curr->next;
  40. curr->next = curr->next->next;
  41. temp = nullptr;
  42. delete temp;
  43. }
  44. else
  45. {
  46. curr = curr->next;
  47. }
  48. }
  49.  
  50. if (flag = true)
  51. {
  52. if (head == holder)
  53. {
  54. removeFirstNode(head);
  55. holder = head;
  56. prev = head;
  57. flag = false;
  58. }
  59. else
  60. {
  61. temp = holder;
  62. holder = holder->next;
  63. prev->next = holder;
  64. temp = nullptr;
  65. delete temp;
  66. flag = false;
  67. }
  68. }
  69.  
  70. prev = holder;
  71. holder = holder->next;
  72. curr = holder;
  73. }
  74. return head;
  75. }
  76. ListNode* removeNthFromEnd(ListNode* head, int n) {
  77.  
  78. if (head == nullptr) return nullptr;
  79.  
  80. ListNode* prev = nullptr;
  81. ListNode* curr = head;
  82. ListNode* temp = nullptr;
  83. int length = listSize(head) - n;
  84.  
  85. while (length > 0) {
  86. prev = curr;
  87. curr = curr->next;
  88. length--;
  89. }
  90.  
  91. if (curr == head) {
  92. removeFirstNode(head);
  93. }
  94.  
  95. else {
  96. temp = curr;
  97. curr = curr->next;
  98. prev->next = curr;
  99. temp = nullptr;
  100. delete temp;
  101. }
  102.  
  103. return head;
  104. }
  105.  
  106. ListNode* removeFirstNode(struct ListNode* head)
  107. {
  108. if (head == nullptr)
  109. return nullptr;
  110.  
  111. ListNode* temp = head;
  112. head->val = head->next->val;
  113. head->next = head->next->next;
  114.  
  115. temp = nullptr;
  116. delete[]temp;
  117.  
  118. return head;
  119. }
  120.  
  121. ListNode* oddEvenList(ListNode* head) {
  122. ListNode* odd = head;
  123. ListNode* even = head->next;
  124. ListNode* evenHead = head->next;
  125. while (even->next != nullptr && odd->next!=nullptr)
  126. {
  127. odd->next = even->next;
  128. odd = odd->next;
  129. even->next = odd->next;
  130. even = even->next;
  131. }
  132. odd->next = evenHead;
  133.  
  134. return head;
  135. }
  136. };
  137.  
  138.  
  139. void print(ListNode* head)
  140. {
  141. ListNode* temp = head;
  142. while (temp != nullptr)
  143. {
  144. std::cout << temp->val << " ";
  145. temp = temp->next;
  146. }
  147. std::cout << std::endl;
  148.  
  149. }
  150.  
  151. int main() {
  152. ListNode* l1 = new ListNode(1);
  153. ListNode* l2 = new ListNode(5);
  154. ListNode* l3 = new ListNode(2);
  155. ListNode* l4 = new ListNode(6);
  156. ListNode* l5 = new ListNode(3);
  157. ListNode* l6 = new ListNode(7);
  158. ListNode* l7 = new ListNode(4);
  159.  
  160. l1->next = l2;
  161. l2->next = l3;
  162. l3->next = l4;
  163. l4->next = l5;
  164. l5->next = l6;
  165. l6->next = l7;
  166.  
  167.  
  168. Solution s1;
  169.  
  170. print(l1);
  171.  
  172. //s1.removeNthFromEnd(l1, 4);
  173. //s1.deleteDuplicates(l1);
  174. //s1.oddEvenList(l1);
  175. print(l1);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement