#ifndef _LIST_H
#define _LIST_H
#include <iostream>
template<class T>
class Node
{
public:
Node(){}//建構函式
Node(T x,Node<T> *pNext = NULL,Node<T> *pPrev = NULL)
:m_x(x),m_pNext(pNext),m_pPrev(pPrev){}
~Node(){}
T m_x;//x座標
Node<T> *m_pNext;//前指標
Node<T> *m_pPrev;//後指標
};
template<class T>
class List
{
public:
List()
{
m_pHead = m_pTail = NULL;
}
List(T x)
{
m_pHead = m_pTail = new Node(x);
}
List(List<T> &list);
//解構函式
~List();
//前插節點
bool PushFrontPont(T x);
//後插節點
bool PushBackPoint(T x);
//前出節點
bool PopFrontPoint();
//後出節點
bool PopBackPoint();
//查詢節點
Node<T>*FindPoint(T x);
//插入節點
bool InsertPoint(T x, int pos);
//刪除節點
bool DeletePoint(T x);
//輸出樹
void FrontOutPutTree();
//輸出樹
void BackOutPutTree();
//getfront
Node<T> * GetFront(){return m_pHead; }
//getend
Node<T> * GetEnd(){ return m_pTail;}
bool Empty();
//賦值運算子多載
//friend BitTree<T> & operator= (BitTree<T> &bt);
//加號運算子多載
//friend BitTree<T> & operator+(BitTree<T> &lbt,BitTree<T> &rbt);
// >運算子多載
//friend bool operator> (BitTree<T> &lbt,BitTree<T> &rbt);
// <運算子多載
//friend bool operator< (BitTree<T> &lbt,BitTree<T> &rbt);
private:
Node<T> *m_pHead;//頭指標
Node<T> *m_pTail;//尾指標
};
#endif