Java双向链表的创建结点,清空链表,添加结点,删除结点

这里给出双向链表的基本操作说明,当然这里只是给出了一个统一的实现模板思路,具体问题还要具体分析。后序还会给出链表的一些应用实例。
packagejavaList;
importjava.util.Iterator;
public class MyLinkedList<AnyType> implements Iterable<AnyType> {
   private int thesize;
   //创建节点
   private static class Node<AnyType>{
      public AnyTypedata;
      public Node<AnyType>prev;
      public Node<AnyType>next;
      public Node(AnyType d, Node<AnyType> p,Node<AnyType> q){
         data = d;
         prev = p;
         next = q;
      }
   }
   //清空链表
   public void clear(){
      Node<AnyType> head = new Node<AnyType>(null,null, null);
      Node<AnyType> end = new Node<AnyType>(null, head,null);
      head.next = end;
      int thesize = 0;
   }
   //在结点p的前边添加结点
   private void addBeforeQ(Node<AnyType>p, AnyType x){
      //该句实现两个功能:1)创建新的结点newNode;2)连接结点:是的x的prev指向p的前驱,x的next指向p
      Node<AnyType> newNode = new Node<AnyType>(x, p.prev, p);
      //使得x的prev(前驱)的next(后继)指向x
      newNode.prev.next = newNode;
      //该句将p的prev(前驱)设为x
      p.prev = newNode;
      //链表加1
      thesize++;
     
   }
   //删除结点元素
   private AnyTyperemove(Node<AnyType> p){
      //要移除结点p,先将p的后继的引向p的前驱
      p.next.prev = p.prev;
      //再将p的前驱的next指向p的后继
      p.prev.next = p.next;
      thesize--;
      //返回删除结点的data值
      return p.data;
   }
   @Override
   public Iterator<AnyType> iterator() {
      return null;
   }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值