队列
一、
首先说明,队列不等价于数组,更不等价于链表;
队列是建立在数组的基础之上的,以数组为基础,但是与之不同的是,这个数组是动态的,长度并非固定化的,可以进行增删查改等一系列动态处理。
一个队列每一个环节只有一个数据,而且每个环节的数据类型都是相同的,然而链表每一个环节之中可以包含多个数据,相当于每一个环节都是一个结构体,即链表是建立在结构体与指针之上的(C语言之中)。
二、
一个完整的队列源代码如下:
/**
* 队列的实现
*
* @author Administrator
*
*/
public class ArrayList<E>{
// 先新建一个新的数组
Object[] desc = new Object[0];
// 添加元素的方法
public void add(E a) {
// 1.创建另外一个新的数组
Object[] src = new Object[desc.length + 1];
// 2.把原数组中的元素复制到新数组中
for (int i = 0; i < desc.length; i++) {
src[i] = desc[i];
}
// 3.把新添加的元素加在数组的后边
src[desc.length] = a;
// 4.让原数组指向新数组
desc = src;
}
// 删除指定位置的值
public void delete(int i) {
if(i<0||i>desc.length){
System.out.println(" ");
}else{
// 1.创建另外一个新的数组
Object[] src = new Object[desc.length - 1];
// 2.用第一个循环把原数组中指定位置以前的数复制到新数组中
for (int m = 0; m < i; m++) {
src[m] = desc[m];
}
// 3.用第二个循环把指定位置后的值复制到新数组中
for (int n = i + 1; n < desc.length; n++) {
src[n - 1] = desc[n];
}
// 最后把目标数组指向新数组
desc = src;
}
}
// 指定位置添加元素
public void insert(int i, E a) {
//检查所需要添加的数字是否不再数组的合理范围之内
if(i<0||i>(desc.length-1)){
System.out.println("ERROR");
}else{
//新建一个临时的数组
Object[] src = new Object[desc.length+1];
for(int m=0;m<i;m++){
src[m] = desc[m];
}
//将指定元素插入
src[i] = a;
for(int n=i;n<desc.length;n++){
src[n+1] = desc[n];
}
// 最后把目标数组指向新数组
desc = src;
}
}
// 获取队列长度的方法
public int length() {
int len = desc.length;
return len;
}
//修改指定位置的元素的值
public void update(int i,E a){
//检查所需要修改的数字是否不再数组的合理范围之内
if(i<0||i>(desc.length-1)){
System.out.println("ERROR");
}else{
//将指定元素修改
desc[i] = a;
}
}
//获取指定位置的值
public E get(int i){
//定义一个临时的object对象
Object temp = new Object();
//获取
temp = desc[i];
//返回一个指定类型的变量
return (E)temp;
}
}
三、
对一些内容的解释:
1、泛型:
起初,我们建立一个列队,传入的数据的类型是不知道的,可能是字符串、整型、实属类型等等,故我们在public class ArrayList<E> 故我们在旁边加了一个<E>【括号中的字符可以任意改变,只是对泛型的一种随意表示】。
2、
Object类,这是所有类的父类,故可以进行广泛的转型,同样的,也可以广泛的接收类型,这样就打打拓宽了队列成员类型的广泛度。
数组
一、一维数组:
三种定义方法【以整型为例】:
1、
int[] a = new int[10];
2、
int[] b = new int[]{1,2,3,4,5};
3、
int[] c = {1,2,3,4,5};
一种不太正规的形式,但没有错:
int a[] = new int[10];【即改变中括号的位置】
一种错误的方式,不适用于数字类的数组:
int [] a;
a[0] = 1;
求数组的长度:
a.length
二、二维数组
三种定义方法:
1、
int[][] d = new int[10][10];
2、
int[][] e = new int[][]{{1,2},{3,4}};
3、
int[][] f = {{1,2},{3,4}};
二、
求数组一维的长度:
a.Length
求数组二维的长度:
a[i].length