双向链表

1.双向链表

1.1双向链表的定义

       双向链表也叫双链表,是链表的一种。它的每个数据节点中都有两个引用。分别指向直接前驱和直接后继。所以从双向链表的任意一个节点开始,都可以很方便的访问它的前驱节点和后继节点。

1.2双向链表示意图

 1.3双向链表增删改查思路

       双向链表比单向链表多了一个指向前一个节点的指针。

 1.3.1尾部插入节点

 (1)定义双向链表的最后一个节点即tailEntry;

 (2)使tailEntry.next指向要插入的节点。

 (3)使要插入节点的前驱节点指向tailEntry。

 (4)更新tailEntry指向新尾巴。

1.3.2头部插入节点

 (1)定位链表头headEntry标记;

 (2)使得要插入节点的next指针指向headEnrty;

 (3)使得headEnrty的前驱指向要插入的节点;

 (4)更新新头部,headEntry指向要插入的节点。

1.3.3删除节点

  (1)直接找到要删除的节点temp(因为是双向链表,因此可以实现自我删除某个节点)。

  (2)使得temp.prev.next=temp.next;

  (3)使得temp.next.prev=temp.prev;

2.双向循环链表

2.1双向循环链表的定义

      双向循环链表的头部节点headEntry的前驱节点指向尾部节点tailEntry。尾部节点tailEntry的后继节点指向头部节点headEntry。形成环状。其他节点与双向链表相同。

2.2双向循环链表的示意图

2.3双向循环链表代码实现

public class DCircleLink<E extends Comparable<E>> implements Link<E>{

  static class Entry<T>{

    private T value;

    private Entry<T> next;

    private Entry<T> prev;

    public Entry(T value){

     this.value=value;
     this.next=next;
     this.prev=prev;
  
}
}
   private Entry<E> prev;
   private Entry<E> next;

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值