|
@@ -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;
|
|
|
+ }
|
|
|
+};
|