Josif_tepe

Untitled

Sep 4th, 2025
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.27 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct node {
  5. int info;
  6. node *next;
  7. };
  8.  
  9. struct SinglyLinkedList {
  10. node * head;
  11.  
  12. void init() {
  13. head = NULL;
  14. }
  15.  
  16. void insertFront(int x) {
  17. node * new_node = new node;
  18. new_node->info = x;
  19. new_node->next = NULL;
  20.  
  21. if(head == NULL) {
  22. head = new_node;
  23. }
  24. else {
  25. new_node->next = head;
  26. head = new_node;
  27. }
  28. }
  29.  
  30.  
  31. void insertBack(int x) {
  32. node * new_node = new node;
  33. new_node->info = x;
  34. new_node->next = NULL;
  35.  
  36. if(head == NULL) {
  37. new_node = head;
  38. }
  39. else {
  40. node * tmp = head;
  41. while(tmp->next != NULL) {
  42. tmp = tmp->next;
  43. }
  44. tmp->next = new_node;
  45. }
  46. }
  47.  
  48. void deleteFront() {
  49. if(head != NULL) {
  50. if(head->next == NULL) {
  51. delete head;
  52. head = NULL;
  53. }
  54. else {
  55. node * tmp = head;
  56. head = head->next;
  57. delete tmp;
  58. }
  59. }
  60. }
  61.  
  62. void deleteBack() {
  63. if(head != NULL) {
  64. if(head->next == NULL) {
  65. delete head;
  66. head = NULL;
  67. }
  68. else {
  69. node * tmp = head;
  70. while(tmp->next->next != NULL) {
  71. tmp = tmp->next;
  72. }
  73. delete tmp->next;
  74. tmp->next = NULL;
  75. }
  76. }
  77. }
  78.  
  79. void deleteAll() {
  80. while(head != NULL) {
  81. deleteFront();
  82. }
  83. }
  84.  
  85. void deleteNode(int x) {
  86. if(head != NULL) {
  87. if(head->info == x) {
  88. deleteFront();
  89. }
  90. else {
  91. node * tmp = head;
  92. node * prev = NULL;
  93.  
  94. while(tmp != NULL && tmp->info != x) {
  95. prev = tmp;
  96. tmp = tmp->next;
  97. }
  98.  
  99. prev->next = tmp->next;
  100. delete tmp;
  101. }
  102. }
  103. }
  104.  
  105. void deleteNode(node * x) {
  106. if(head != NULL) {
  107. if(head == x) {
  108. deleteFront();
  109. }
  110. else {
  111. node * tmp = head;
  112. node * prev = NULL;
  113.  
  114. while(tmp != NULL && tmp != x) {
  115. prev = tmp;
  116. tmp = tmp->next;
  117. }
  118.  
  119. prev->next = tmp->next;
  120. delete tmp;
  121. }
  122. }
  123. }
  124.  
  125. void print() {
  126. node * tmp = head;
  127. while(tmp != NULL) {
  128. cout << tmp->info << " --> ";
  129. tmp = tmp->next;
  130. }
  131. cout << endl;
  132. }
  133.  
  134.  
  135. };
  136.  
  137.  
  138. int main() {
  139.  
  140. SinglyLinkedList sll;
  141.  
  142. sll.init();
  143. sll.insertFront(1);
  144. sll.insertFront(2);
  145. sll.insertFront(3);
  146.  
  147. sll.insertBack(4);
  148. sll.insertBack(5);
  149.  
  150. sll.print();
  151.  
  152. sll.deleteNode(1);
  153.  
  154. sll.print();
  155.  
  156. return 0;
  157. }
  158.  
Advertisement
Add Comment
Please, Sign In to add comment