fork download
  1. #include <iostream>
  2.  
  3. struct node
  4. {
  5. int data;
  6. node* next;
  7. };
  8. node *head = NULL;
  9.  
  10. void insertFirst(int data)
  11. {
  12. node *newNode = new node;
  13. newNode->data = data;
  14. newNode->next = head;
  15. head = newNode;
  16. }
  17.  
  18. void deleteFirst()
  19. {
  20. if (head != NULL)
  21. {
  22. node *temp = head;
  23. head = head->next;
  24. delete temp;
  25. }
  26. }
  27.  
  28. void deleteLast()
  29. {
  30. if (head != NULL)
  31. {
  32. node **temp = &head;
  33.  
  34. while ((*temp)->next != NULL) {
  35. temp = &((*temp)->next);
  36. }
  37.  
  38. delete *temp;
  39. *temp = NULL;
  40. }
  41. }
  42.  
  43. void deleteAll()
  44. {
  45. while (head != NULL)
  46. {
  47. node *temp = head->next;
  48. delete head;
  49. head = temp;
  50. }
  51. }
  52.  
  53. void print()
  54. {
  55. if (head != NULL)
  56. {
  57. node *temp = head;
  58. while (temp != NULL)
  59. {
  60. std::cout << temp->data << " ";
  61. temp = temp->next;
  62. }
  63. }
  64. else
  65. std::cout << "<empty>";
  66. std::cout << "\n";
  67. }
  68.  
  69. int main()
  70. {
  71. insertFirst(10);
  72. insertFirst(20);
  73. insertFirst(30);
  74. print();
  75.  
  76. deleteLast();
  77. insertFirst(40);
  78. print();
  79.  
  80. deleteAll();
  81. print();
  82.  
  83. return 0;
  84. }
Success #stdin #stdout 0.01s 5364KB
stdin
Standard input is empty
stdout
30 20 10 
40 30 20 
<empty>