`

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

 
阅读更多

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

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

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

 

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

分享到:
评论

相关推荐

    我的画图板1.0<细说1.准备工作,自定义队列>

    7. **实际应用**:在“我的画图板1.0”中,自定义队列是如何被用在实际功能中的,例如用户操作序列的存储,以及如何优化用户体验。 由于我们没有具体的压缩包文件内容,这部分只能根据标题和描述进行推测。不过,...

    c语言实现基本队列功能

    C语言虽然没有内置的队列数据类型,但我们可以使用数组或链表来模拟队列的基本操作。在这个项目中,我们看到了两个文件:`cqueue.cpp` 和 `cqueue.h`,它们分别包含了队列的实现和接口定义。 `cqueue.h` 文件通常会...

    索引队列-C#中的自定义队列

    标题 "索引队列-C#中的自定义队列" 指向了一个特定的数据结构实现,即在C#编程环境中创建一个支持索引访问...对于.NET开发者而言,掌握这样的自定义队列实现能够提高代码的灵活性和效率,特别是在处理特定类型问题时。

    swift-iOS动画队列-仿映客刷礼物效果

    本教程将详细讲解如何使用Swift语言实现类似映客直播中的动画队列,来创建一个仿映客刷礼物的动态效果。我们将主要探讨Swift中的动画库及其应用,以及如何构建动画序列。 首先,Swift开发中的动画通常基于Core ...

    双端队列C++实现 双端队列C++实现

    自定义双端队列的基本思想是使用动态数组或链表作为底层数据结构。这里我们以动态数组为例,因为它提供了更好的空间效率和随机访问性能。一个简单的C++实现可能包括以下几个关键操作: 1. **初始化**:创建一个空的...

    消息队列的实现

    然而,这里提到的“消息队列实现”可能是指自定义实现的消息队列,而非Windows内建的消息系统。在VC中,可以使用多种数据结构,如链表或队列,来实现一个自定义的消息队列。消息通常包含一个消息类型标识和相关的...

    数据结构栈和队列基本操作以及多种杨辉三角的程序代码

    在本压缩包中,重点讲述了两种基本的数据结构——栈(Stack)和队列(Queue),并结合了杨辉三角(Pascel's Triangle)的算法实现,提供了多种不同的编程方法。以下是关于这些主题的详细解释: ### 栈(Stack) 栈...

    C#实现进程间通信(使用消息队列实现)

    标题"**C#实现进程间通信(使用消息队列实现)**"主要探讨的是如何使用C#语言通过消息队列来实现在不同进程之间的通信。这种方法适用于那些需要进程独立性和消息缓冲的应用场景。 在C#中,我们可以使用System....

    MFC 队列实现

    总结起来,MFC 队列实现涉及的主要知识点有: 1. 数据结构:理解队列的“先进先出”原则。 2. MFC 类库:了解 MFC 的基本概念和面向对象编程。 3. 自定义类:设计和实现队列类,继承自 `CObject`。 4. 标准库容器:...

    C++队列实现,封装了数据结构中的队列

    ### 自定义队列实现 在C++中,我们可以通过继承`std::vector`或者使用动态数组来实现一个简单的队列。以下是一个基于动态数组实现的队列示例: ```cpp #include class Queue { private: int* arr; int front; ...

    用Java实现数据结构中的队列

    5. **自定义队列实现** 如果需要自定义队列行为,可以实现`Queue`接口。下面是一个简单的基于数组的队列实现: ```java import java.util.NoSuchElementException; public class MyQueue&lt;T&gt; { private T[] ...

    java 队列实现

    在实际开发中,Java集合框架提供了多种队列实现,如`ArrayDeque`(适用于高性能的随机访问)、`PriorityQueue`(根据元素的自然排序或自定义比较器进行排序)等,可以根据具体需求选择合适的数据结构。此外,Java...

    C#编写一个类实现队列的功能,

    在C#编程语言中,创建自定义队列类是一种常见...通过这样的测试,我们可以确保自定义队列类实现了预期的功能,同时也学习了如何在C#中创建和测试自定义数据结构。这不仅加深了对数据结构的理解,也有助于提高编程技能。

    自定义的栈与队列

    自定义队列的实现方式有: 1. 双端队列(Deque):可以同时在两端进行入队和出队操作,例如C++中的`std::deque`。 2. 链表:使用链表,入队在尾部插入节点,出队则删除头部节点。 3. 循环数组:当数组满时,通过循环...

    消息队列应用.实现聊天

    根据给定文件的信息,我们可以提炼出以下关于“消息队列应用实现聊天”的相关知识点: ### 消息队列概述 ...总之,本例通过.NET Framework下的MSMQ实现了基本的聊天功能,展示了消息队列在实际应用中的强大能力。

    Java实现的线程池、消息队列功能

    尽管描述部分为空,但从提供的文件名我们可以推测,`CodeReader.java`和`SourcePathManager.java`可能包含了读取和管理代码路径的逻辑,而`CodeReader`可能是用于解析和理解Java源码中线程池和消息队列实现的部分。...

    C++实现队列的创建、插入、删除

    在C++中,我们可以使用标准模板库(STL)中的`queue`容器来方便地实现队列操作,但为了深入理解其工作原理,也可以自定义队列结构。下面将详细探讨如何在C++中创建、插入和删除队列。 1. 队列的创建: 在C++中,...

    C++实现一个队列

    C++标准库中提供了`&lt;queue&gt;`头文件来支持队列操作,但有时为了学习、理解数据结构的底层原理或者实现特定功能,我们需要自定义队列。本篇文章将深入探讨如何使用C++实现一个简单的队列。 首先,我们需要定义队列的...

    基于rabbitMQ实现的消息队列(MQ)

    消息队列(MQ)是一种中间件技术,用于在分布式系统中解耦生产者和消费者,通过缓存消息来提高系统的可...通过学习和使用提供的源代码,开发者可以更好地理解如何在Java项目中集成和利用RabbitMQ实现消息队列的功能。

Global site tag (gtag.js) - Google Analytics