<强>一,写在前面
强>
,,,,,,,,数据结构中的队列应该是比较熟悉的了,就是先进先出,因为有序故得名队列,就如同排队嘛,在对尾插入新的节点,在对首删除节点.jdk集合框架也是提供也一个队列的接口。这个接口代表一个队列。顺序队列:ArrayBlockingQueue LinkedBlockingQueue。(上面两种是足色队列)还有一种是ConcurentLinkedQueue。
底层的实现由数组合链表两种的,数组的实现会有个弊端的,会造成假满的现象,开始的时候,队列为空的时候,对首引用变量个对尾的引用变量都为null,随着删除队列的元素,就会发生面前+ 1,后面等于底层数组的容量了。在顺序的存储结构中,前面总是保存这着队列中即将出队列的元素的索引,后方总是保存着即将进入队列的元素的索引。队列中的元素的个数就是rear-front的。在顺序的队列中,底层是数组,所以保存的数据元素是不会改变的,改变的只有后面和前面这两个引用变量。
,,,,,,,这里采用链式存储可以有效的利用空间的,就是引用变量要占用额外的空间的。
队列的常用的操作:
,,,,,,,,,,,,1:初始化
,,,,,,,,,,,,2:返回队列的长度
,,,,,,,,,,,3:添加元素
,,,,,,,,,,,4:删除元素
,,,,,,,,,,,5:访问对首的元素
,,,,,,,,,,,6:访问队列的对尾的元素
,,,,,,,,,,,7:判断队列是否为空
,,,,,,,,,,,8:清空队列
<强>二,自定义的实现
强>
源码展示的比较清楚,就不用再多做介绍
公开课LinkedQueuelQueue=new LinkedQueue (); lQueue.add (“aaa”); lQueue.add (" bbb "); lQueue.add (“ccc”); lQueue.add (ddd); System.out.println(“返回队列的头结点的数值:”+ lQueue.elementFront ()); System.out.println(“返回队列的尾节点的数值:”+ lQueue.elementRear ()); System.out.println (lQueue.length ()); System.out.println (lQueue); } }
运行结果: