#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;
}