fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct node
  5. {
  6. int data;
  7. node *next;
  8. };
  9. node *head = NULL;
  10. void insertNode(int value);
  11. void display();
  12. void deleteNode(int value);
  13. void insertBegin(int value);
  14. void deleteBegin();
  15. void delete_end();
  16. int main()
  17. {
  18. insertNode(1);
  19. insertNode(9);
  20. insertNode(2);
  21. display();
  22. insertBegin(4);
  23. display();
  24. deleteBegin();
  25. display();
  26. return 0;
  27. }
  28. void insertNode(int value)
  29. {
  30. node *new_node, *last;
  31. new_node = new node;
  32. new_node->data = value;
  33.  
  34. if (head == NULL)
  35. {
  36. head = new_node;
  37. new_node->next = NULL;
  38. }
  39. else
  40. {
  41. last = head;
  42. while (last->next != NULL)
  43. {
  44. last = last->next;
  45. }
  46. last->next = new_node;
  47. new_node->next = NULL;
  48. }
  49. }
  50. void display()
  51. {
  52. node *current;
  53.  
  54. if (head == NULL)
  55. {
  56. cout << "linked list is empty" << endl;
  57. }
  58.  
  59. else
  60. {
  61. current = head;
  62.  
  63. while (current != NULL)
  64. {
  65. cout << current->data << " ";
  66.  
  67. current = current->next;
  68. }
  69. }
  70. cout << endl;
  71. }
  72. void deleteNode(int value)
  73. {
  74. node *current, *prev;
  75. current = head;
  76. prev = head;
  77. if (current->data == value)
  78. {
  79. head = current->next;
  80. free(current);
  81. return;
  82. }
  83. while (current->data != value)
  84. {
  85. prev = current;
  86. current = current->next;
  87. }
  88. prev->next = current->next;
  89. free(current);
  90. }
  91. void insertBegin(int value){
  92. node* new_node = new node;
  93. new_node->data = value;
  94. new_node->next = head ;
  95. head = new_node;
  96. }
  97. void deleteBegin(){
  98. if (head != NULL){
  99. node* current, *prev;
  100. current = head;
  101. prev = head ;
  102. current = current->next;
  103. head = current;
  104. free (prev);
  105. }
  106. else cout << "linkedlist is empty";
  107. }
  108. void delete_end(){
  109. if(head==NULL){
  110. cout<<"linked list is empty.\n";
  111. }
  112. else if(head->next==NULL){
  113. delete(head);
  114. head=NULL;
  115. }
  116. else{
  117. node* ptr=head;
  118.  
  119. while(ptr->next->next!=NULL){
  120. ptr=ptr->next;
  121. }
  122.  
  123. delete(ptr->next);
  124. ptr->next=NULL;
  125. }
  126. }
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
1  9  2  
4  1  9  2  
1  9  2