`

用自定义的队列实现一些基本功能

 
阅读更多

   如果说数组是一条修好公路,那么队列就是一条只有起点没有终点的路,它依据人们的实际情况不断的重修,直到修到人们所要达到的低分,虽然这个例子不够现实,但是这确实是数组和队列的很好解释。队列的使用,一般能够排除一些空指针异常等现象,所以优先于数组使用队列是一种不错的选择。

   首先我们得定义一个类,定义该类的属性。

/**
 * 定义一个学生类。包含学生的姓名和年龄
 * @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();
		}
		
		
	}

 

至此,一个简单的队列实现了。队列的思想其实比较简单,就是实现一个类中元素的增删添加之类的。看似很难但是如果认真的写一下,其实不是那么难的。真好。

分享到:
评论

相关推荐

    学生课设,C++数据结构实验,队列的实现,vs2022完整项目,包含完整代码,开箱即用

    LinkQueueUse.cpp 应用层程序示例,使用自定义的 LinkQueue 类来实现队列的操作,通过交互式菜单演示队列的基本功能。 总结: 程序整体功能是使用链表实现的队列数据结构,并提供一系列操作(初始化、插入、删除、...

    duilib原生库,派生Lable控件,C++实现文字跑马灯 滚动显示的效果

    1. 基类 Lable的所有基本功能 2. 当设置的文字不为空时,自动跑马灯 滚动显示文字,显示速度由外部 xml 里的属性决定 3. 当设置的文字为空时,自动停止跑马灯显示。 该资源包含了 添加一个自定义控件需要改动所有...

    数据结构习题练习及参考答案(自定义)

    是老师自己出的题目,跟随课程进度来的,比较基础,有选择、填空、编程等,也有参考答案

    用js实现的模拟jquery的animate自定义动画(2.5K)

    1:功能说明 兼容主流浏览器。 1:支持回调函数; 2:支持级联动画调用; 3:支持delay动画队列延迟; 4:支持stop停止动画; 5:支持opacity透明度变化; 6:支持+= -= *= /=操作; 7:支持单位操作(px, %); 2:...

    自己写的C#线程池

    从易语言转型到C#感觉C#自带的线程池不够灵活(或许是自己的技术不够),所以自己写了一个线程池工作类为了配合自己的使用习惯,有兴趣的...代码用到的是信号处理以及队列等一些比较基础的东西,已经测试了功能基本上可用

    python入门到高级全栈工程师培训 第3期 附课件代码

    04 meta标签以及一些基本标签 05 img标签和列表标签 06 form表单之input标签 07 通过form向server端发送数据 08 form表单之select标签 09 table标签 第38章 01 css的四种引入方式 02 css的四种基本选择器 03 css的...

    Android 播放器

    Android 初级练手好项目,播放器。学了2个月Android基础知识(学到新的,旧的立刻忘光光。...service类设计得比较充分(进度条啊,),里面实现了播放器的基本所有功能。(本程序Activity并没有全用。。)

    jQuery权威指南366页完整版pdf和源码打包

    前 言 第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...

    jQuery基础教程(第四版)

    第11章挖掘了jQuery效果特性的潜力,这一章不仅要讲解如何编写自定义缓动函数,还会介绍在动画的每一阶段执行操作,以及通过自定义队列提前将各种操作排队。 第12章介绍与操作DOM相关的更实用的技术,包括将任意数据...

    定义一个包含学生信息(学号,姓名,成绩)的顺序表

    定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能: (1) 逐个输入学生信息,建立信息表; (2) 显示信息表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生的学号和成绩; (4) 给定一个...

    c语言c++项目源代码_c语言情人节的红玫瑰.rar

    其中,C语言部分主要负责处理一些基本的数据结构和算法,如链表、栈和队列等。而C++部分则负责处理一些更高级的数据结构和算法,如模板、异常处理和多态等。 项目中还包含了一些第三方库,如OpenGL和SDL等,这些库...

    jQuery权威指南-源代码

    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 ...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    11.5.2 使用消息队列的自定义缓存依赖 11.6 异步页面 11.6.1 创建异步页面 11.6.2 在异步页面中查询数据 11.6.3 错误处理 11.6.4 在异步任务中使用缓存 11.6.5 多异步任务和超时 11.7 总结 第12章...

    asp.net知识库

    使用.ashx文件处理IHttpHandler实现发送文本及二进制数据的方法 制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的功能 XmlHttp实现无刷新三联动ListBox 鼠标...

    javaSE代码实例

    17.1.3 自定义尺寸固定线程池的使用 375 17.1.4 单任务线程池的使用 377 17.1.5 可变尺寸线程池的使用 378 17.1.6 延迟线程池的使用 380 17.1.7 使用自定义参数的线程池 381 17.2 有返回值的线程调用 ...

    azure-k8s-metrics-adapter:Kubernetes自定义指标API和Azure服务的外部指标API的实现

    在本尝试使用Azure Service Bus队列使用进行扩展。 在本尝试使用每秒请求数和应用程序见解使用进行扩展 快速部署 这描述了部署度量标准适配器的基本步骤。 有关完整部署的详细信息,请参阅如何进行并检出。 确保到...

Global site tag (gtag.js) - Google Analytics