当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

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

发表于: 2015-07-10   作者:淡淡淡的天空   来源:转载   浏览:
摘要: 数组的特点 1.数组是相同数据类型的元素的集合 2.数组中的各元素是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起 3.数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。 数组的定义 一维数组定义: 1.数据类型[] 数组名=new 数据类型[数组长度]; 2.数据类型[]
数组的特点
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;
	}

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

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
1.数组的优点和缺点 优点: 数组是容器 数组的存储空间是连续的。 数组的存储访问速度快:可以直接
  用数组实现的队列,也叫循环队列。就是定义一个数组,用两个下标front,rear表示队头和队尾。当
【项目 - 队列数组】   创建10个队列,分别编号为0-9(处理为队列数组,编号即下标)。输入若干个
在介绍数组队列之前我想先介绍一下数组是为何物,数组是数据的一中存储结构,其定义为: 数组类型[]
数组队列 队列这个名词,字面上除了让人想着他可能是军训的时候我们排着的一对或一列之外,没有别的
数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合。听起来是不是很抽象,简单理解:
/* *Copyright (c) 2015 烟台大学计算机与控制工程学院 *All right reserved. *标题:数据结构实践—
问题及代码: /*2015,烟台大学计算机与控制工程学院 *作者:桑立 *完成日期:2015年10月14日 *问题
//队列(数组模拟) class Queue{ private int[] queue; //队列函数 int length; int head; //头指
/* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:第七周 项目
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号