1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- #include <iostream>
- #include <any>
- template <typename T>
- struct Node
- {
- T value;
- Node* next = nullptr;
- Node* prev = nullptr;
- };
- template <typename T>
- class List
- {
- private:
- Node<T>* start = nullptr;
- Node<T>* end = nullptr;
- public:
- List()
- {
- Node<T>* start = nullptr;
- Node<T>* end = nullptr;
- }
- void add(T value)
- {
- Node<T>* node = new Node<T>;
- node->value = value;
- if(start==nullptr) {
- start = node;
- end = node;
- return;
- }
- node->prev = end;
- end->next = node;
- end = node;
- }
- void pop()
- {
- end = end->prev;
- end->next = nullptr;
- }
- friend std::ostream &operator <<(std::ostream &os, List &c)
- {
- os << "( ";
- Node<T>* currentNode = c.start;
- while (currentNode->next!=nullptr)
- {
- os << currentNode->value << " = ";
- currentNode = currentNode->next;
- }
- os << currentNode->value << " )";
- delete currentNode;
- return os;
- }
- };
|