今天又回顾了原来队列那节,自己重新把代码敲了一遍,但是还是犯了一些小小的错误,但是还是收获了,对队列有了近一步的认识。在此几下仅仅为了更好的理解。
错误分析:
这个错误真的是犯得太幼稚了,而且还犯了两次。在需要用到循环语句的地方,我这样用:
然后我打印了输出队列的长度:
结果是:
后来自己就把代码重新检验了一遍发现也没有什么问题,突然才想到原来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);
}
}
所以解决这个问题的话,队列的实现就像用数组去实现是一样的简单。虽然写的有点简单,有点幼稚,算是对这里的深入理解吧。