| 
					
				 | 
			
			
				@@ -0,0 +1,59 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 |