队列的重新认识

今天又回顾了原来队列那节,自己重新把代码敲了一遍,但是还是犯了一些小小的错误,但是还是收获了,对队列有了近一步的认识。在此几下仅仅为了更好的理解。

错误分析:

       这个错误真的是犯得太幼稚了,而且还犯了两次。在需要用到循环语句的地方,我这样用:

 然后我打印了输出队列的长度:

 结果是:

 后来自己就把代码重新检验了一遍发现也没有什么问题,突然才想到原来if语句只是七判断的作用,但这里的真正的用意在于循环下去直到找到最后一个为空的为止。如果用if语句,这块代码只能执行一次,count只能加一次,所以长度为1。而我们常用的循环语句主要有三类:while语句,do-while语句和for语句。这里就不再详细介绍了,因为用法很简单。所以把代码中的if改为while时,输出结果为:

 这样问题就解决了!!!

在队列这一块中,主要的是抓住队列的特点。队列是通过前后连接的关系来解决添加、删除、插入数据等的方法。但是再这个过程中,有涉及到需要在队列中找到相对应的下标,这个的方法是这样的:比如说在插入数据的方法中:

 

//插入元素
 public void insert(int index,Object obj){
  if(index < 0 || index >= size()){//先判断index是否越界
   throw new ArrayIndexOutOfBoundsException("超出范围:"+size());
  }
  Node node = new Node();
  node.setData(obj);
  if(root == null){
   root = node;
   lastNode = node;
  }else{
   if(index == 0){
    node.setNext(root);
    node = root;
    return;
   }

//找到对应的index下标
   int count =0;
   Node indexNode = root;
   Node prevNode = root;
   while(index != count){
    prevNode  = indexNode;
    count ++;
    indexNode = indexNode.getNext();
   }
   node.setNext(indexNode);
   prevNode.setNext(node);
  }
 }

 

所以解决这个问题的话,队列的实现就像用数组去实现是一样的简单。虽然写的有点简单,有点幼稚,算是对这里的深入理解吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值