怕混淆概念,先提一下什么是“堆”,“栈”,"队列"以及它们的区别。
这里有一篇博客就此展开了论述,感兴趣可去看看并支持一下原博主:什么是“堆”,“栈”,“堆栈”,“队列”,它们的区别
说到队列,会想到先进先出、x进y出等等这样的性质。队列与链表不同,本质上就是个能够实现自增长的数组,是线性的。不管在已经写好的c++库里,java的API中它们是怎样的一个特性,总会有我有一个想要的功能,但是原先写好的包里不支持的时候。所以,就来自己完成一个目标队列,以实现自己的需求。
要写一个队列,那肯定首先要满足最基本的需求,比如:生成、插入、删除、弹出、复制(c++中可以重载’='运算符)、长度、输出数据。其他特殊要求比如排序等等。
通过java实现一个自己的队列,唯一需要注意的地方就是,在生成队列的时候,由于本质是数组的扩张,考虑到效率问题,就不同情况每次申请扩张的那一部分的大小有所不同,可以是100、1000、INT_MAX…其次在java中实现这个队列自增长比较方便的地方是,局部变量转为全局变量,这在申请更大的数组之后更新原数组的操作中起了重要作用。
而同理,想要实现自己的一个链表类也很简单,下面附上java代码:
public class Node {
private Node head;
private Node next;
private Node current;
private Object data;
private