如果说数组是一条修好公路,那么队列就是一条只有起点没有终点的路,它依据人们的实际情况不断的重修,直到修到人们所要达到的低分,虽然这个例子不够现实,但是这确实是数组和队列的很好解释。队列的使用,一般能够排除一些空指针异常等现象,所以优先于数组使用队列是一种不错的选择。
首先我们得定义一个类,定义该类的属性。
/** * 定义一个学生类。包含学生的姓名和年龄 * @author 周建权 * */ public class Student { private String name; private int age; Student(String name,int age){ this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public void study(){ System.out.println("学生在学习!"); } }
其次,我们需要定义一个队对列类,这是用于实现对学生类的一些操作。
/** * 定义一个队列类 * @author acer * */ public class Queue { //新建一个学生数组 private Student [] stu=new Student[0]; /** * 定义一个函数,用于实现往队列中加入元素 * @param st返回值是学生类型 */ public void add(Student st){ //新建一个数组 Student [] stud=new Student[stu.length+1]; //复制数组的内容 for(int i=0;i<stu.length;i++){ stud[i]=stu[i]; } //把要加入的元素复制都数组的最后一个元素 stud[stu.length]=st; //再继续此过程 stu=stud; } /** * 用于获取队列的当前大小 * @return 返回队列的当前长度 */ public int size(){ return stu.length; } /** * 定义一个函数,用于获取队列里的某一位置的值 * @param index * @return 返回某一位置的值 */ public Student get(int index){ Student st=stu[index-1]; return st; } /** * 定义一个插入的方法,该方法用于往队列中插入新的值 * @param st插入的数据 * @param index插入的位置 */ public void insert(Student st,int index){ //新建一个数组 Student [] stud=new Student[stu.length+1]; //把数组index前面的值复制到队列中 for(int i=0;i<index-1;i++){ stud[i]=stu[i]; } //把索引位置插入的值赋值过去 stud[index-1]=st; // 把数组后面的值复制到队列中 for(int i=index;i<stu.length;i++){ stud[i]=stu[i-1]; stu=stud; } } /** * 定义一个删除函数,用于删除队列中某一位置的值 * @param index删除的位置 */ public void delete(int index){ //新建一个数组 Student [] stud=new Student[stu.length-1]; //把数组index前面的值复制到队列中 for(int i=0;i<index-1;i++){ stud[i]=stu[i]; } // 把数组后面的值复制到队列中 for(int i=index;i<stu.length;i++){ stud[i-1]=stu[i]; } } }
接下来,就是队列的实现啦,
/** * 类的作用是实现queue类中的一些功能,用于测试类Queue的一些功能 * @author 周建权 2013.7.16 * */ public class QueueTest { /**定义一个主函数,该函数用于实现队列的增删查找等功能 */ public static void main(String[] args) { //实例化一个Queue对象 Queue que=new Queue(); //给队列初始化几个值 for(int i=0;i<5;i++){ Student st=new Student("学生"+i,10+i); que.add(st); } que.delete(3); Student st=new Student(" 小明",3); que.insert(st,2); for(int i=1;i<que.size();i++){ System.out.println("姓名是"+que.get(i).getName()+"年龄是"+que.get(i).getAge()); que.get(i).study(); } }
至此,一个简单的队列实现了。队列的思想其实比较简单,就是实现一个类中元素的增删添加之类的。看似很难但是如果认真的写一下,其实不是那么难的。真好。
相关推荐
LinkQueueUse.cpp 应用层程序示例,使用自定义的 LinkQueue 类来实现队列的操作,通过交互式菜单演示队列的基本功能。 总结: 程序整体功能是使用链表实现的队列数据结构,并提供一系列操作(初始化、插入、删除、...
1. 基类 Lable的所有基本功能 2. 当设置的文字不为空时,自动跑马灯 滚动显示文字,显示速度由外部 xml 里的属性决定 3. 当设置的文字为空时,自动停止跑马灯显示。 该资源包含了 添加一个自定义控件需要改动所有...
是老师自己出的题目,跟随课程进度来的,比较基础,有选择、填空、编程等,也有参考答案
1:功能说明 兼容主流浏览器。 1:支持回调函数; 2:支持级联动画调用; 3:支持delay动画队列延迟; 4:支持stop停止动画; 5:支持opacity透明度变化; 6:支持+= -= *= /=操作; 7:支持单位操作(px, %); 2:...
从易语言转型到C#感觉C#自带的线程池不够灵活(或许是自己的技术不够),所以自己写了一个线程池工作类为了配合自己的使用习惯,有兴趣的...代码用到的是信号处理以及队列等一些比较基础的东西,已经测试了功能基本上可用
04 meta标签以及一些基本标签 05 img标签和列表标签 06 form表单之input标签 07 通过form向server端发送数据 08 form表单之select标签 09 table标签 第38章 01 css的四种引入方式 02 css的四种基本选择器 03 css的...
Android 初级练手好项目,播放器。学了2个月Android基础知识(学到新的,旧的立刻忘光光。...service类设计得比较充分(进度条啊,),里面实现了播放器的基本所有功能。(本程序Activity并没有全用。。)
前 言 第1章 jquery开发入门/1 1.1 jquery概述/2 1.1.1 认识jquery /2 1.1.2 jquery基本功能/2 1.1.3 搭建jquery开发环境/3 1.1.4 编写第一个简单的jquery应用/3 1.1.5 jquery程序的代码风格/5 1.2...
第11章挖掘了jQuery效果特性的潜力,这一章不仅要讲解如何编写自定义缓动函数,还会介绍在动画的每一阶段执行操作,以及通过自定义队列提前将各种操作排队。 第12章介绍与操作DOM相关的更实用的技术,包括将任意数据...
定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能: (1) 逐个输入学生信息,建立信息表; (2) 显示信息表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生的学号和成绩; (4) 给定一个...
其中,C语言部分主要负责处理一些基本的数据结构和算法,如链表、栈和队列等。而C++部分则负责处理一些更高级的数据结构和算法,如模板、异常处理和多态等。 项目中还包含了一些第三方库,如OpenGL和SDL等,这些库...
1.1.2 jQuery基本功能/2 1.1.3 搭建jQuery开发环境/3 1.1.4 编写第一个简单的jQuery应用/3 1.1.5 jQuery程序的代码风格/5 1.2 jQuery的简单应用/7 1.2.1 jQuery访问DOM对象/7 1.2.2 jQuery控制DOM对象/7 ...
11.5.2 使用消息队列的自定义缓存依赖 11.6 异步页面 11.6.1 创建异步页面 11.6.2 在异步页面中查询数据 11.6.3 错误处理 11.6.4 在异步任务中使用缓存 11.6.5 多异步任务和超时 11.7 总结 第12章...
使用.ashx文件处理IHttpHandler实现发送文本及二进制数据的方法 制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的功能 XmlHttp实现无刷新三联动ListBox 鼠标...
17.1.3 自定义尺寸固定线程池的使用 375 17.1.4 单任务线程池的使用 377 17.1.5 可变尺寸线程池的使用 378 17.1.6 延迟线程池的使用 380 17.1.7 使用自定义参数的线程池 381 17.2 有返回值的线程调用 ...
在本尝试使用Azure Service Bus队列使用进行扩展。 在本尝试使用每秒请求数和应用程序见解使用进行扩展 快速部署 这描述了部署度量标准适配器的基本步骤。 有关完整部署的详细信息,请参阅如何进行并检出。 确保到...