C++实现双向链表

本文介绍如何使用C++实现双向链表。双向链表的每个节点包含两个指针,分别指向前驱和后继节点,使得在链表中进行前向和后向遍历更为方便。内容主要对比单链表的差异并简要说明实现过程。
摘要由CSDN通过智能技术生成

上一篇用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;
    //  }
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值