fork download
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4. class node {
  5. public:
  6. int data;
  7. node* next;
  8. };
  9.  
  10. class linked {
  11. public:
  12. node* head;
  13.  
  14. linked() {
  15. head = NULL;
  16. }
  17.  
  18. bool impty() {
  19. return (head == NULL);
  20. }
  21.  
  22. bool found(int value) {
  23. bool f = false;
  24. node* temp = head;
  25. while (temp != NULL) {
  26. if (temp->data == value) {
  27. f = true;
  28. break;
  29. }
  30. temp = temp->next;
  31. }
  32. return f;
  33. }
  34.  
  35. void inserf(int v2) {
  36. node* newnode = new node();
  37. newnode->data = v2;
  38. newnode->next = head;
  39. head = newnode;
  40. }
  41.  
  42. void append(int v3) {
  43. node* newnode = new node();
  44. newnode->data = v3;
  45. newnode->next = NULL;
  46. if (impty()) {
  47. head = newnode;
  48. } else {
  49. node* temp = head;
  50. while (temp->next != NULL) {
  51. temp = temp->next;
  52. }
  53. temp->next = newnode;
  54. }
  55. }
  56.  
  57. void disp() {
  58. if (impty()) {
  59. cout << "No elements\n";
  60. } else {
  61. node* temp = head;
  62. while (temp != NULL) {
  63. cout << temp->data << " ";
  64. temp = temp->next;
  65. }
  66. cout << endl;
  67. }
  68. }
  69.  
  70. void insertAt(int pos, int value) {
  71. node* newNode = new node();
  72. newNode->data = value;
  73. newNode->next = NULL;
  74.  
  75. if (pos == 1) {
  76. newNode->next = head;
  77. head = newNode;
  78. cout << "Element inserted successfully at position 1\n";
  79. return;
  80. }
  81.  
  82. node* temp = head;
  83. for (int i = 1; i < pos - 1 && temp != NULL; ++i) {
  84. temp = temp->next;
  85. }
  86.  
  87. if (temp == NULL) {
  88. cout << "Position out of range\n";
  89. return;
  90. }
  91.  
  92. newNode->next = temp->next;
  93. temp->next = newNode;
  94. cout << "Element inserted successfully at position " << pos << endl;
  95. }
  96.  
  97. bool search(int value) {
  98. node* temp = head;
  99. while (temp != NULL) {
  100. if (temp->data == value) {
  101. return true;
  102. }
  103. temp = temp->next;
  104. }
  105. return false;
  106. }
  107.  
  108. void deleteElement(int value) {
  109. node* temp = head;
  110. node* prev = NULL;
  111.  
  112. if (temp != NULL && temp->data == value) {
  113. head = temp->next;
  114. delete temp;
  115. return;
  116. }
  117.  
  118. while (temp != NULL && temp->data != value) {
  119. prev = temp;
  120. temp = temp->next;
  121. }
  122.  
  123. if (temp == NULL) {
  124. cout << "Element not found\n";
  125. return;
  126. }
  127.  
  128. prev->next = temp->next;
  129. delete temp;
  130. }
  131. };
  132.  
  133. int main() {
  134. linked link;
  135. int n, data;
  136.  
  137. cout << "Enter the number of elements to append: ";
  138. cin >> n;
  139. cout << "Enter " << n << " elements to append:\n";
  140. for (int i = 0; i < n; ++i) {
  141. cin >> data;
  142. link.append(data);
  143. }
  144.  
  145. link.disp();
  146.  
  147. int pos, value;
  148.  
  149. cout << "Enter position and value to insert: ";
  150. cin >> pos >> value;
  151. link.insertAt(pos, value);
  152. link.disp();
  153.  
  154. int searchValue;
  155. cout << "Enter value to search: ";
  156. cin >> searchValue;
  157. if (link.search(searchValue)) {
  158. cout << searchValue << " found in the list\n";
  159. } else {
  160. cout << searchValue << " not found in the list\n";
  161. }
  162.  
  163. int dt;
  164. cout << "Enter value to delete: ";
  165. cin >> dt;
  166. link.deleteElement(dt);
  167. link.disp();
  168.  
  169. return 0;
  170. }
Success #stdin #stdout 0.01s 5296KB
stdin
3
1
2
3
2
9
3
2
stdout
Enter the number of elements to append: Enter 3 elements to append:
1 2 3 
Enter position and value to insert: Element inserted successfully at position 2
1 9 2 3 
Enter value to search: 3 found in the list
Enter value to delete: 1 9 3