main.h
#include <iostream>
using namespace std;
class DbList; //前置声明
class DblListNode
{
friend class DblList;
public:
int data;
DblListNode *left, *right;
} ;
class DblList
{
public:
DblList()
{
first = new DblListNode();
first->left = first->right = first;
}
void Insert(DblListNode*, DblListNode*); //一个节点插入到另一个节点的右边
bool Delete(DblListNode*);
public:
DblListNode* first;
};
void DblList::Insert(DblListNode* k, DblListNode* node) //一个节点插入到另一个节点的右边
{
k->left = node;
k->right = node->right;
node->right->left = k;
node->right = k;
}
bool DblList::Delete(DblListNode* node)
{
if(node == first)
cerr << "Delete the head node not permitted!" << endl;
else
{
node->left->right = node->right;
node->right->left = node->left;
delete node;
}
}
int main()
{
DblList intList;
DblListNode *node1, *node2, *node3, *node4, *node5;
node1 = new DblListNode();
node2 = new DblListNode();
node3 = new DblListNode();
node4 = new DblListNode();
node5 = new DblListNode();
node1->data = 10;
node2->data = 20;
node3->data = 30;
node4->data = 40;
node5->data = 50;
intList.Insert(node1, intList.first);
intList.Insert(node2, intList.first);
intList.Insert(node3, intList.first);
intList.Insert(node4, intList.first);
intList.Insert(node5, intList.first);
intList.Delete(node3);
cout << intList.first->right->data << endl;
cout << intList.first->right->right->data << endl;
cout << intList.first->right->right->right->data << endl;
cout << intList.first->right->right->right->right->data << endl;
cout << intList.first->right->right->right->right->left->data << endl;
return 0;
}