
数据结构与算法学习2-----数组实现队列
发布日期:2021-05-06 19:33:04
浏览次数:16
分类:技术文章
本文共 1596 字,大约阅读时间需要 5 分钟。
首先说一下队列的特性,和栈正好相反
是先进先出,也就是说谁先进来先出去的就是谁 这次要实现的是一个简单的队列,有add和 delete 以及打印数据的方法 其中add()方法采用尾插法,其中会考虑到空间重复利用的问题package array;//用数组模拟实现队列 和栈相反 栈是头插法、尾删除 队列是尾插法、头删除public class Queue { private int[] value = new int[20]; int head = -1; //头指针 一直跟着头部元素 int end = -1; //尾指针 一直跟着尾部元素 int max = 20; //最大元素数量 //添加元素 尾插法 当end到底 需要将底部值回推到顶部 重置head 如果此时还是满的 那就满了 public void add(int param) { if (end >= 19) { head = -1; int [] temp = new int[max]; int index = 0; for (int i : value) { if (i != 0) { temp[index] = i; index++; } } end = index - 1; value = temp; if(index >= 20) { System.out.println("满了"); } }else { value[end + 1] = param; end++; } } //删除元素 public void delete() { head++; value[head] = 0; } //打印 public void print() { for (int i : value) { System.out.print(i + ","); } } static class Demo { public static void main(String[] args) { Queue q = new Queue(); for (int i = 0; i < 40 ;i++) { q.add(i); } for (int i = 0; i < 5 ;i++) { q.delete(); } for (int i = 41; i < 50 ;i++) { q.add(i); } q.print(); } }}
我这里实现是有一些问题得,头尾指针可能可以加一 更好理解一些,还有最大元素数量,这里可以通过一个构造方法去动态控制,不过我只是为了理解思想,这些不重要了。
欢迎讨论~发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年03月10日 03时29分06秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
jQuery练习t88
2019-03-03
jQuery练习t90
2019-03-03
jQuery练习t110
2019-03-03
jQuery练习t123
2019-03-03
jQuery练习t167,从0到1
2019-03-03
jQuery练习t271,从0到1
2019-03-03
jQuery练习t310,从0到1
2019-03-03
asp.net代码练习 work015 回调技术
2019-03-03
asp.net代码练习 work016 fileupload文件上传
2019-03-03
asp.net代码练习 work021 DataReader的使用
2019-03-03
PHP7.0--如何使用函数的引用
2019-03-03
Java基础--01--数据类型/方法/数组
2019-03-03
【JokerのZYNQ7020】LINUX_EMIO_LED。
2019-03-03
【JokerのZYNQ7020】LINUX_EMIO_BUTTON。
2019-03-03
vim匹配特定的行并删除
2019-03-03
读取excel文件错误
2019-03-03
傅里叶变换的初级理解三
2019-03-03
F1 score的意义
2019-03-03
python36+centos7离线安装tensorflow与talib的方法
2019-03-03
hdf5与hdfs的区别
2019-03-03