数组队列——让数组更灵活

数组的特点
1.数组是相同数据类型的元素的集合
2.数组中的各元素是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起
3.数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。

数组的定义
一维数组定义:
1.数据类型[] 数组名=new 数据类型[数组长度];
2.数据类型[] 数组名={数值,...};
3.数据类型[] 数组名=new 数据类型[ ]{数值,...};
二维数组定义:
1.数据类型 [][] 数组名 = new 数据类型[行][列];
2.数据类型 [][] 数组名 = {{值,...},...};
3.数据类型 [][] 数组名 = new 数据类型[][]{{值,...},...};

数组的使用
获取一维数组元素总数:数组名.length;
获取二维数组的行数:数组名.length;
获取二维数组的行的列数:数组名[r].length;
获取一维数组指定位置的数据:数组名[下标];
获取二维数组指定位置的数据:数组名[行下标][列下标];
取得数组某一位置的元素:数组名[索引值](索引值:及数组中元素的位置,从0开始,最大为数组长度-1)

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。
队列可以用数组Q[1…m]来存储,数组的上界m即是队列所容许的最大容量。在队列的运算中需设两个指针:head,队头指针,指向实际队头元素;tail,队尾指针,指向实际队尾元素的下一个位置。一般情况下,两个指针的初值设为0,这时队列为空,没有元素。数组定义Q[1…10]。Q(i) i=3,4,5,6,7,8。头指针head=2,尾指针tail=8。队列中拥有的元素个数为:L=tail-head。现要让排头的元素出队,则需将头指针加1。即head=head+1这时头指针向上移动一个位置,指向Q(3),表示Q(3)已出队。如果想让一个新元素入队,则需尾指针向上移动一个位置。即tail=tail+1这时Q(9)入队。

添加元素方法
public void add(E e){
		Object[] newArray=new Object[array.length+1];
		for(int i=0;i<array.length;i++){
			newArray[i]=array[i];
		}
		newArray[array.length]=e;
		size++;
		array=newArray;
	}

删除元素方法①
public void delete(E e){
		Object[] newArray=new Object[array.length-1];
		for(int i=0;i<array.length-1;i++){
			if(array[i].equals(e)){
				newArray[i]=array[i+1];
				for(int j=i+1;j<array.length-1;j++){
					newArray[j]=array[j+1];
				}
				break;
			}else
			newArray[i]=array[i];
		}
		array=newArray;
		size--;
	}

删除元素方法②
public E remove(int index){
		if(index<0||index>=size)
			return null;
		Object[] newArray=new Object[array.length-1];
		
		for(int i=0;i<index;i++){
			newArray[i]=array[i];
		}
		E e=(E)array[index];
		for(int i=index+1;i<array.length;i++){
			newArray[i-1]=array[i];
		}
		array=newArray;
		size--;
		return e;
	}

修改元素方法①
public void fixa(E e,E f){
		Object[] newArray=new Object[array.length];
		for(int i=0;i<array.length;i++){
			newArray[i]=array[i];
			if(e!=null&&f!=null&&array[i]!=null&&array[i].equals(e)){
				newArray[i]=f;
			}
			for(int j=i+1;j<array.length;j++){
				newArray[j]=array[j];
			}
		}
		array=newArray;
	}

修改元素方法②
public void fix(E e,int index){
		if(index<0||index>=size)
			System.out.println("数组越界了!");
		Object[] newArray=new Object[array.length];
		for(int i=0;i<index;i++){
			newArray[i]=array[i];
		}
		newArray[index]=e;
		for(int i=index+1;i<array.length;i++){
			newArray[i]=array[i];
		}
		array=newArray;
	}

插入元素方法
public void insert(E e,int index){
		if(index<0||index>=size)
			System.out.println("数组越界了!");
		Object[] newArray=new Object[array.length+1];
		
		for(int i=0;i<index;i++){
			newArray[i]=array[i];
		}
		newArray[index]=e;
		for(int i=index+1;i<array.length+1;i++){
			newArray[i]=array[i-1];
		}
		size++;
		array=newArray;
	}

猜你喜欢

转载自819418680.iteye.com/blog/2226146
今日推荐