双向循环链表

         前几天项目里需要做一个循环展示装备的功能,我想到了用双向循环链表的结构可以很好的实现这个功能,以下是我根据别人设计的链表结构改装的(语言C#):
/// <summary>
/// 链表节点(双向循环链表节点的构造类)
/// </summary>
class DlNode<T>
{
    public T data = default(T);  //数据域
    public DlNode<T> next;          //前驱节点
    public DlNode<T> prior;          //后继节点

    public DlNode(DlNode<T> prior, T data, DlNode<T> next)
    {
        this.prior = prior;
        this.data = data;
        this.next = next;
    }

    public DlNode()
    {

    }

    public T getData()
    {
        return data;
    }

    public void setData(T data)
    {
        this.data = data;
    }

    public DlNode<T> getNext()
    {
        return next;
    }

    public void setNext(DlNode<T> next)
    {
        this.next = next;
    }

    public DlNode<T> getPrior()
    {
        return prior;
    }

    public void setPrior(DlNode<T> prior)
    {
        this.prior = prior;
    }
}

/// <summary>
/// 链表(双向循环链表的构造类)
/// </summary>
class DlList<T>
{
    public DlNode<T> dlHead;
    int size;

    public DlList()
    {
        dlHead = new DlNode<T>();
        dlHead.prior = dlHead;
        dlHead.next = dlHead;
        size = 0;
    }

    public DlList(List<T> t)
    {
        // 用列表a构造一个双向循环链表
        dlHead = new DlNode<T>();
        dlHead.prior = dlHead;
        dlHead.next = dlHead;
        DlNode<T> p = null;

        for (int i = t.Count - 1; i >= 0; i--)
        {
            p = new DlNode<T>(dlHead.prior, t[i], dlHead.next);
            dlHead.next.setPrior(p);
            dlHead.setNext(p);
            dlHead.prior.setNext(p);
        }

        size = t.Count;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值