欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-12 17:10:03
...
数组的特点
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;
	}