7.10号学习笔记——队列,数组

队列

一、

首先说明,队列不等价于数组,更不等价于链表;

队列是建立在数组的基础之上的,以数组为基础,但是与之不同的是,这个数组是动态的,长度并非固定化的,可以进行增删查改等一系列动态处理。

 

一个队列每一个环节只有一个数据,而且每个环节的数据类型都是相同的,然而链表每一个环节之中可以包含多个数据,相当于每一个环节都是一个结构体,即链表是建立在结构体与指针之上的(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

猜你喜欢

转载自yuyongjia.iteye.com/blog/1584615
今日推荐