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

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

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

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值