fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. struct Node{
  5. int data;
  6. Node *next;
  7. };
  8.  
  9. Node *create_node(Node *head, int element){
  10. Node *new_node = new Node;
  11.  
  12. if(new_node == NULL){
  13. cout<<"overflow"<<endl;
  14. exit(1);
  15. }
  16. new_node->data = element;
  17. new_node->next = head;
  18.  
  19. return new_node;
  20. }
  21. // insert at end
  22.  
  23. Node *last_pos(Node *head, int element){
  24. Node *new_node = create_node(NULL, element);
  25.  
  26. if(head == NULL){
  27. head = new_node;
  28. return new_node;
  29. }
  30.  
  31. Node *temp = head;
  32. while(temp->next != NULL){
  33. temp = temp->next;
  34. }
  35. temp->next = new_node;
  36. return head;
  37. }
  38.  
  39. // insert at middle
  40.  
  41. Node *middle(Node *temp, int element){
  42. Node *new_node = new Node;
  43.  
  44. if(new_node == NULL){
  45. cout<<"overflow"<<endl;
  46. exit(1);
  47. }
  48. new_node->data = element;
  49. new_node->next = temp->next;
  50. temp->next = new_node;
  51.  
  52. return temp;
  53. }
  54.  
  55. // delete head
  56.  
  57. Node *del_head(Node *head){
  58. if(head == NULL){
  59. cout<<"Underflow"<<endl;
  60. exit(1);
  61. }
  62. head = head->next;
  63. return head;
  64. }
  65.  
  66. // delete end
  67.  
  68. Node *del_end(Node *head){
  69.  
  70. Node *temp=head, *prev;
  71.  
  72. while(temp->next != NULL){
  73. prev = temp;
  74. temp = temp->next;
  75. }
  76. prev->next = NULL;
  77. return head;
  78. }
  79.  
  80. //print function
  81.  
  82. void print(Node *head){
  83. Node *temp = head;
  84. while(temp != NULL){
  85. cout<<temp->data<<" ";
  86. temp = temp->next;
  87. }
  88.  
  89. }
  90.  
  91. int main(){
  92.  
  93. Node *head = NULL;
  94. Node *first, *second, *beg;
  95.  
  96. first = create_node(head, 10);
  97. head = first;
  98.  
  99. second = create_node(first->next, 20);
  100. first->next = second;
  101.  
  102. cout<<"1st & 2nd value: ";
  103. print(head);
  104. cout<<endl;
  105.  
  106. beg = create_node(head, 5);
  107. head = beg;
  108.  
  109. cout<<"After insert at first: ";
  110. print(head);
  111. cout<<endl;
  112.  
  113. cout<<"After insert at last: ";
  114. head = last_pos(head, 30);
  115.  
  116. print(head);
  117. cout<<endl;
  118.  
  119. cout<<"after insert at middle: ";
  120. head = middle(head, 15);
  121.  
  122. print(head);
  123. cout<<endl;
  124.  
  125. cout<<"After delete head: ";
  126. head = del_head(head);
  127.  
  128. print(head);
  129. cout<<endl;
  130.  
  131. cout<<"After delete end: ";
  132. head = del_end(head);
  133.  
  134. print(head);
  135. cout<<endl;
  136.  
  137. }
  138.  
Success #stdin #stdout 0.01s 5324KB
stdin
Standard input is empty
stdout
1st & 2nd value: 10 20 
After insert at first: 5 10 20 
After insert at last: 5 10 20 30 
after insert at middle: 5 15 10 20 30 
After delete head: 15 10 20 30 
After delete end: 15 10 20