#include <iostream>
using namespace std;
template <class T> class DblList;
template <class T>
struct DblNode
{
friend class DblList<T>;
public:
DblNode(T &dt) :data(dt) {}
DblNode() {}
//private:
T data;
DblNode *lLink;
DblNode *rLink;
};
template <class T>
class DblList
{
public:
DblList()
{
first = new DblNode<T>();
first->lLink = first->rLink = first;
};
DblNode<T> * getFirst()
{
return first;
}
//在p1的右边插入p2
void Insert(DblNode<T> * p1, DblNode<T> * p2);
void Delete(DblNode<T> * p);
private:
DblNode<T> *first;
};
template <class T>
void DblList<T>::Insert(DblNode<T> * p1, DblNode<T> * p2)
{
p2->lLink = p1;
p2->rLink = p1->rLink;
p1->rLink->lLink = p2;
p1->rLink = p2;
}
template <class T>
void DblList<T>::Delete(DblNode<T> * p)
{
if (p == first)
r
C++双链表
最新推荐文章于 2024-01-26 04:14:56 发布