自定义行列

自定义队列

数组的交换和数组中的数据的交换是不同的,一个是引用传递,一个是值传递。

队列内部需要数组的支持,归根到底还是要靠数组保存数据。

队列的优点是长度没有固定(可以增加和删除元素),也就可以拥有无限的队列元素(相对于单纯的数组而言,世界上是没有绝对的东西的),有利于庞大的数据处理。

public class Queue {
	
	//创建一个队列内部数组
	User[] use = new User[0]; 
	
	//增加一个元素
	public void add(User data){
		//创建一个数组,用以临时保存队列中的数据
		User[] temp = new User[use.length+1];
		//将队列中的数据赋给临时数组
		for(int i=0;i<use.length;i++){
			temp[i] = use[i];
		}
		//将要添加的数据添加到临时数组
		temp[temp.length-1] = data;
		//交换数组
		use = temp;
	}
	
	//删除一个元素
	public void del(int index){
		//创建一个临时数组
		User[] temp = new User[use.length-1];
		//判断要删除的元素是第几位
		if(index == 1){
			for(int i=0;i<use.length-1;i++){
				use[i] = use[i+1];
			}
			//将队列中的数据赋给临时数组
			for(int i=0;i<temp.length;i++){
				temp[i] = use[i];
			}
		}
		if(index == use.length){
			for(int i=use.length-1;i>0;i--){
				use[i] = use[i-1];
			}
			//将队列中的数据赋给临时数组
			for(int i=0;i<temp.length;i++){
				temp[i] = use[i+1];
			}
		}
		if(index>1 && index<use.length){
			for(int i=0;i<index;i++){
				temp[i] = use[i];
			}
			for(int j=index+1;j<use.length;j++){
				temp[j-1] = use[j];
			}
		}
		//交换数组
		use = temp;
	}
	
	/**
	 * 取出指定位置的数据
	 * @param index
	 * @return
	 */
	public User get(int index){
        return use[index];
	}
	
	/**
	 * 队列中元素的个数
	 * @return
	 */
	public int size(){
		return use.length;
	}
	
	//程序入口
	public static void main(String args[]){
		//创建一个队列对象
		Queue q = new Queue();
		//给队列添加元素
		for(int i=0;i<5;i++){
			User u=new User();
			u.id=i;
			u.name="用户"+i;
			//加入到队列中
			q.add(u);
		}
		
		//删除一个元素
		q.del(3);
		
		//打印数据
		for(int i=0;i<q.size();i++){
			User us=q.get(i);
			System.out.println((i+1)+"号取出: "+us.name);
		}
	}
}

 

public class User {
	public int id;
	public String name;

}