什么是双链表呢
![双链表](https://img-blog.csdn.net/20170722181308280?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRXV0ZXJwZV9f/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
双链表它的每个数据节点中都有两个指针,分别指向直接后继和直接前驱。从双链表的任意一个节点开始,都可以很方便的访问它的前驱节点和后继节点。学习了C++后,我试着用C++实现了一份简单的双链表。
头文件
using namespace std;
typedef int datatype;
struct Node
{
Node(const datatype data = 0)
:_data(data)
,_pre(NULL)
,_next(NULL)
{}
datatype _data;
Node* _pre;
Node* _next;
};
class ListNode
{
public:
ListNode()
:_phead(NULL)
{}
ListNode(size_t n,datatype data)//构造n个相同的非空链表
{
{
_phead = BuyNode(data);
Node* cur = _phead;
while(n--)
{
cur->_next = BuyNode(data);
cur->_next->_pre = cur;
cur = cur->_next;
}
}
}
void PushBack(const datatype& data)
{
Node* tmp = _phead;
Node* NewNode = BuyNode(data);
if(_phead == NULL)//若原先链表为空,则头指针指向新节点
{
_phead = BuyNode(data);
}