List.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include <iostream>
  2. #include <any>
  3. template <typename T>
  4. struct Node
  5. {
  6. T value;
  7. Node* next = nullptr;
  8. Node* prev = nullptr;
  9. };
  10. template <typename T>
  11. class List
  12. {
  13. private:
  14. Node<T>* start = nullptr;
  15. Node<T>* end = nullptr;
  16. public:
  17. List()
  18. {
  19. Node<T>* start = nullptr;
  20. Node<T>* end = nullptr;
  21. }
  22. void add(T value)
  23. {
  24. Node<T>* node = new Node<T>;
  25. node->value = value;
  26. if(start==nullptr) {
  27. start = node;
  28. end = node;
  29. return;
  30. }
  31. node->prev = end;
  32. end->next = node;
  33. end = node;
  34. }
  35. void pop()
  36. {
  37. end = end->prev;
  38. end->next = nullptr;
  39. }
  40. friend std::ostream &operator <<(std::ostream &os, List &c)
  41. {
  42. os << "( ";
  43. Node<T>* currentNode = c.start;
  44. while (currentNode->next!=nullptr)
  45. {
  46. os << currentNode->value << " = ";
  47. currentNode = currentNode->next;
  48. }
  49. os << currentNode->value << " )";
  50. delete currentNode;
  51. return os;
  52. }
  53. };