数据结构 - 双向链表(C++)

来源:互联网 发布:网络销售外汇好开单吗? 编辑:程序博客网 时间:2024/04/27 15:26

// ------DoublyLinkedList.h------template <class T>class DNode{private:// 指向左、右结点的指针DNode<T> * left;DNode<T> * right;public:// data为公有成员T data;// 构造函数DNode(void);DNode(const T& item);// 改变表的方法void InsertRight(DNode<T> * p);void InsertLeft(DNode<T> * p);DNode<T> * DeleteNode(void);// 取得指向左、右结点的指针DNode<T> * NextNodeRight(void) const;DNode<T> * NextNodeLeft(void) const;};
// ------DoublyLinkedList.cpp------#include "DoublyLinkedList.h"// 构造函数,创建一个空表,并初始化其data域template <class T>DNode<T>::DNode(const T& item){// 建立一个指向自身的结点并初始化data域left = right = this;data = item;}// 将结点p插入到双向链表中当前结点右边template <class T>void DNode<T>::InsertRight(DNode<T> * p){// 将p和当前结点的右后继结点相连p->right = right;right->left = p;// 将p的左边和当前结点相连p->left = this;right = p;}// 将结点p插入到当前结点左边template<class T>void DNode<T>::InsertLeft(DNode<T> * p){// 将p和当前结点的左后继结点相连p->left = left;left->right = p;// 将p的右边与当前结点相连p->right = this;left = p;}// 从链表中删除当前结点并返回其地址template <class T>DNode<T> * DNode<T>::DeleteNode(void){// 将左结点的右指针指向右结点left->right = right;// 将右结点的左指针指向左结点right->left = left;// 返回当前结点的指针return this;}

14 0
原创粉丝点击