双链表
一、定义
双向链表(双链表)是链表的一种。和单链表一样,双链表也是由结点组成,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。
1、节点定义
typedef int DataType;
struct DNode
{
DataType data; //节点键值
DNode *prev; //前驱指针
DNode *next; //后继指针
DNode(const DataType x);//构造函数
};
2、双链表定义
class DList
{
public:
DList();//构造函数
DList(const DList &s);//拷贝构造函数
DList &operator=(DList &s);//赋值运算符重载
~DList();//析构函数
public:
void reverseList(); //链表逆置
void printList(); //打印链表
void pushBack(DataType x); //尾部插入
void popBack(); //尾部删除
void pushFront(DataType x); //头部插入
void popFront(); //头部删除
//void removeNode(DataType x);
void Clear();
int getLength();
private:
DNode *head;//指向头结点
DNode *tail;//指向尾结点
int len;
};
二、实现(C++)
在下面给出的示例中,双链表的头结点和尾节点分别是双链表的第一个节点和最后一个节点。示例代码