数组队列总结

一:数组
1. 数组是一个容器
1.数组在定义时大小已固定
2.只能存储一种数据类型
3.是有序的
4.存储空间是连续的,线性的
2.数组的使用形式
1.一维数组
数据类型[] 数组名称=new 数据类型[长度];
int[] array=new int[10];

数据类型[] 数组名称={数组中的元素,...,};
int[] array={1,2,3};

数据类型[] 数组名;
数组名= new 数据类型[]{值,...,...,};
int[] array;
array=new int[]{1,2,3};

数据类型 数组名[];
数组名= new 数据类型[长度];
int array[];
array=new int[10];
2.二维数组(二维数组与一维数组大致一样)
数据类型[][] 数组名称=new 数据类型[行][列];
int[][] array=new int[10][10];

数据类型[][] 数组名称={数组中的元素,...,};
int[][] array={{1},{2,3}};

数据类型[][] 数组名;
数组名= new 数据类型[][]{{值,...},{...},};
int[][] array;
array=new int[][]{{1,2},{3}};

数据类型 数组名[][];
数组名= new 数据类型[行][列];
int array[][];
array=new int[10][10];

一维数组和二维数组的存储空间都是连续的,线性的。


二:队列
1.因为数组在使用时长度已固定,如果要做增减等操作时需重新定义一个新数组,不方便,因此我们使用自定义队列。
2.自定义队列的实现:
1.定义一个类,封装数组的操作
2.定义一个原始数组,起始长度可定为0,数据类型为Object(Object是所用的父类)。
3.添加对数组操作的方法,如增加,删除,插入,修改,查找。
在自己写完代码后可测试一下
代码如下:

public class MyQueu {
//创建一个数组
private Object[] src=new Object[0];
//在尾部添加一个对象
public void add(Object o){
//创建一个新数组
Object[] a = new Object[src.length+1];
//将src数组重的对象赋给a数组
for(int i=0;i<src.length;i++){
a[i]=src[i];
}
//将实参赋最后一位
a[src.length]=o;
//令src数组指向a数组
src=a;
}
//获取队列的长度
public int size(){
return src.length;

}
//
public void add(Object o,int index){
//创建一个新数组
Object[] a=new Object[src.length+1];

index = index-1;
//将index前的数赋给a
for(int i=0;i<index;i++){
a[i]=src[i];
}
//将o赋给a[index]
a[index]=o;
//将index后的数赋给a
for(int j=index+1;j<src.length+1;j++){
a[j]=src[j-1];
}
//令src数组指向a数组
src=a;
}
public void remove(int index){
//创建新数组
Object[] a=new Object[src.length-1];
index=index-1;
//将src数组下标小于index的赋给新数组


for(int i=0;i<index;i++){
a[i]=src[i];
}
//将剩余数组中的数据赋给新数组
for(j=index+1;j<src.length;j++){
a[j-1]=src[j];
}
//令src数组指向a数组
src=a;

}
public Object get(int index){
//返回值
return src[index];
}
//在数组中添加多个数据
public void add(int index,int num,Object[] b){
//实例化一个数组
Object[] a=new Object[src.length+num];
index =index-1;
//将src数组下标小于index的赋给新数组
for(int i=0;i<index;i++){
a[i]=src[i];
}
//将剩余数组中的数据赋给新数组
for(int j=0;j<num;j++){
a[j+index]=b[j];
}
///将src数组中的剩余数据赋给新数组

for(int i=index+num;i<a.length;i++){
a[i]=src[i-num];
}
//将src数组指向数组a
src=a;

}
//在数组中删除多个数据
public void remove(int index,int num){
//实例化一个新数组
Object[] a=new Object[src.length-num];
index=index-1;
//循环赋值
for(int j=0;j<index;j++){
a[j]=src[j];
}
//将剩余的元素赋给新数组
for(int i=index;i<a.length;i++){
a[i]=src[i+num];
}
//将src数组指向数组a
src=a;
}

}
测试如下:
public class Text {
/**
* 主函数
*/
public static void main(String [] args){
//实例化一个MyQueu类对象
MyQueu mq=new MyQueu();
//调用添加函数
mq.add(1);
mq.add("w");
mq.add(3);
//将4添加到队列中位置为mq[1]
mq.add("Q", 2);
//调用删除函数
mq.remove(4);
//获取队列的长度
mq.size();
//获取指定对象的名字
mq.get(0);
mq.get(1);
mq.get(2);
//实例化一个新数组
Object[] a={1,2,3};

mq.add(2, 3, a);
mq.remove(1,2);
//输出
System.out.println(mq.size());
for(int i=0;i<mq.size();i++){
System.out.println(mq.get(i));
}
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值