#include<iostream> #include<string> using namespace std; template<typename T> struct Node { public: Node(const T& d) :_next(NULL) , _prev(NULL) , _data(d) {} T _data; Node<T>* _next; Node<T>* _prev; }; template<typename T> class DList { public: DList(); ~DList(); DList(const DList<T>& dl); DList& operator=(const DList<T>& dl); void PushBack(const T&d); void PopBack(); void PushFront(const T&d); void PopFront(); void Print()const; private: Node<T>* _head; Node<T>* _tail; }; template<typename T> DList<T>::DList() :_head(NULL) , _tail(NULL) {} template<typename T> DList<T>::~DList() { Node<T>* cur = _head; while (cur) { Node<T>* del = cur; cur = cur->_next; delete del; } } template<typename T> DList<T>::DList(const DList<T>& dl) { } template<typename T> DList<T>& DList<T>::operator=(const DList<T>& dl) { } template<typename T> void DList<T>::PushBack(const T&d) { if (_head == NULL) { _head = new Node<T>(d); _tail = _head; } else { Node<T> *newNode= new Node<T>(d); _tail->_next = newNode; newNode->_prev = _tail; _tail = newNode; } } template<typename T> void DList<T>::Print()const { Node<T>* cur = _head; while (cur) { cout << cur->_data << "->"; cur = cur->_next; } cout << "over" << endl; } int main() { DList<int> int_list; int_list.PushBack(1); int_list.PushBack(2); int_list.PushBack(3); int_list.PushBack(4); int_list.Print(); getchar(); return 0; }
本文出自 “顺势而为” 博客,请务必保留此出处http://lk123456.blog.51cto.com/10831443/1755388
原文:http://lk123456.blog.51cto.com/10831443/1755388