fork download
  1. #include <iostream>
  2.  
  3. struct Node {
  4. int data;
  5. Node* next;
  6. Node(int d){
  7. data = d;
  8. next = nullptr;
  9. }
  10. };
  11.  
  12. class LinkedList {
  13. private:
  14. Node* head;
  15.  
  16. public:
  17. LinkedList(){
  18. head = nullptr;
  19. }
  20.  
  21. void insertHead(int d){
  22. Node* node = new Node(d);
  23. if(head == nullptr){
  24. head = node;
  25. }else{
  26. node->next = head;
  27. head = node;
  28. }
  29. }
  30.  
  31. void insert(int d){
  32. Node* node = new Node(d);
  33. if (head == nullptr){
  34. head = node;
  35. }else{
  36. Node* temp = head->next;
  37. while(temp != nullptr){//while(temp)
  38. if (temp->next == nullptr){
  39. temp->next = node;
  40. return;
  41. }else{
  42. temp = temp->next;
  43. }
  44. }
  45. head->next = node;
  46. }
  47. }
  48. void print(){
  49. if (head == nullptr){
  50. std::cout << "Linked list is empty." << std::endl;
  51. }else{
  52. std::cout << head->data << std::endl;
  53. Node* temp = head->next;
  54. while(temp != nullptr){
  55. std::cout << temp->data << std::endl;
  56. temp = temp->next;
  57. }
  58. }
  59. }
  60.  
  61. // yıkıcı method
  62. //bu methodda program sonlandığında aldığımız belleği geri iade ediyoruz
  63. //videoda hatırlayamadım ama sonra düşündüm sadece head silmek yeterli değil
  64. //çünkü her yeni node için yeni bir bellek alanı istedik, Node* node = new Node(d);
  65. //bu yüzden teker teker bütün düğümleri dolaşıp silmeliyiz
  66. //kod aşağıdaki şekilde olacak
  67. ~LinkedList(){
  68. //
  69. Node* temp = head;
  70. while(temp != nullptr){
  71. Node* temp2 = temp;
  72.  
  73. //eğer tempi direk silseydik next elemana ulaşamazdık
  74. //onun için ikinci bir geçici değişken (temp2) tutuyoruz
  75. temp = temp->next;
  76. delete temp2;
  77.  
  78. }
  79. }
  80. };
  81.  
  82. int main(){
  83. LinkedList lst;
  84. lst.insert(5);
  85. lst.insert(10);
  86. lst.insert(15);
  87. lst.insertHead(25);
  88. lst.print();
  89. return 0;
  90.  
  91. }
  92.  
Success #stdin #stdout 0s 5288KB
stdin
Standard input is empty
stdout
25
5
10
15