별빛의 낙하지 :: [C++] template을 사용하여 연결리스트 구현

[C++] template을 사용하여 연결리스트 구현

C++ 2012. 11. 16. 01:56 Posted by byulbit

/* SingleLinkedList, DoubleLinkedList 둘 다 사용할 수 없을까? DoubleLinkedList를 만들기 위한 사전작업. */ #include <iostream> template<typename T> class Node { public: Node(T element) { _data = element; next = NULL; } void addToNext(Node<T>* right) { right->next = this->next; this->next = right; } T _data; Node* next; }; // DoubleLinekd List template<typename T> class DNode { public: DNode(T element) { _data = element; next = NULL; prev = NULL; } void addToNext(DNode<T>* right) { right->next = this->next; this->next = right; right->prev = this; } T _data; DNode<T>* next; DNode<T>* prev; }; template<typename T=int, template<typename L> class NODE=Node > class List { public: typedef T value_type; List() { _head = new NODE<T>(0); _tail = NULL; _lastNode = _head; } void addNext(T element) { NODE<T>* elemNode = new NODE<T>(element); _lastNode->addToNext( elemNode ); _lastNode = elemNode; } void addNext(NODE<T>* next) { _lastNode->addToNext( next ); _lastNode = next; } private: NODE<T>* _head; NODE<T>* _tail; NODE<T>* _lastNode; // Last Node }; int main() { List<int, Node> s; // Single Linked List List<int, DNode> d; // Double LInked LIst s.addNext(new Node<int>(10) ); s.addNext(new Node<int>(11) ); s.addNext(12); s.addNext(13); d.addNext(10); d.addNext(11); d.addNext(12); d.addNext(13); std::cout << std::endl; }


'C++' 카테고리의 다른 글

STL 요소 만들어보기(2)  (0) 2012.11.16
STL 요소 만들어보기(1)  (0) 2012.11.16
[C++0x] Move Operator  (0) 2012.11.16
[C++0x] Move Constructor  (0) 2012.11.15
[C++] C++ name decoration 혹은 name mangling  (0) 2012.11.13