fork download
  1. #include <iostream>
  2.  
  3. struct node {
  4. // значение в ячейке
  5. double value;
  6. // указатель на след ячейку
  7. node *next = nullptr;
  8. // указатель на пред ячейку
  9. node *prev = nullptr;
  10. };
  11.  
  12. int main() {
  13. // временный указатель
  14. node* tip;
  15. // здесь мы будем хранить начало
  16. node* start;
  17. // здесь будем хранить конец
  18. node* end;
  19. // создаем новую ячейку
  20. tip = new node{10};
  21. // запоминаем начало
  22. start = tip;
  23. // создаем ещё одну ячейку
  24. tip->next = new node{20};
  25. tip->next->prev = tip;
  26. tip = tip->next;
  27. // ещё одну
  28. tip->next = new node{30};
  29. tip->next->prev = tip;
  30. end = tip->next;
  31.  
  32. // можно пройти из начала в конец
  33. for(node *i = start; i; i = i->next)
  34. std::cout << i->value << '\n';
  35.  
  36. // можно пройти из конца в начало
  37. for(node *i = end; i; i = i->prev)
  38. std::cout << i->value << '\n';
  39. }
  40.  
Success #stdin #stdout 0s 4964KB
stdin
Standard input is empty
stdout
10
20
30
30
20
10