上一篇用C++实现了单链表。今天呢,我们来看看双向链表如何通过C++实现。双向链表也叫双链表,它的的每个数据节点都有两个指针,分别指向直接后继和直接前驱。所以从双向链表中的任何一个节点开始,都可以很方便的访问它的前驱节点和后继节点。
#include<iostream>
#include<assert.h>
using namespace std;
typedef int DataType;
struct DListNode //节点的创建
{
DataType data;
DListNode* next;
DListNode* prev;
DListNode(DataType x) //节点初始化
:data(x),next(NULL),prev(NULL)
{}
};
class DList
{
typedef DListNode Node;
public:
DList()
:_head(NULL), _tail(NULL)
{}
DList(const DList& l)
:_head(NULL),_tail(NULL)
{
if (l._head == NULL)
{
return;
}
else
{
Node* cur = l._head;
while (cur)
{
PushBack(cur->data);
cur = cur->next;
}
}
}
//DList& operator=(const DList& l) //传统写法
//{
// if (this != &l)
// {
// _head = NULL;
// _tail = NULL;
// Node* cur = l._head;
// while (cur)
// {
// PushBack(cur->data);
// cur = cur->next;
// }
// _tail->next = NULL;
// }