老师布置的作业完成动态数组
1:Array_1
/**
* 定义一个用来保存整数的动态数组
*
* @author kowloon
*
*/
public class Array_1 {
// 定义一个长度是0的数组,来表示动态数组存放数据的位置
// 初始状态该下,没有任何数据,长度是0
private int[] src = new int[0];
/**
* 将指定的数据添加到数组中
*
* @param t
* 要添加的数据
*/
public void add(int t) {
// 定义一个新的数组,长度是src的长度+1
int[] dest = new int[src.length + 1];
// 将要添加的数据放到新数组的最后一个位置
dest[dest.length - 1] = t;
// 如果原数组中有数据,这按照下标对应位置放到新数组
for (int i = 0; i < src.length; i++) {
dest[i] = src[i];
}
// 将src指向新数组
src = dest;
}
/**
* 获取指定编号的数据
*
* @param index
* 要获取的数据的编号
* @return 取得的数据
*/
public int get(int index) {
// 要获取的数据就在src数组中
return src[index];
}
/**
* 获得动态数组中数据的个数
*
* @return 返回数据的个数
*/
public int size() {
return src.length;
}
/**
* 将指定的数据插入到指定的位置
*
* @param t
* 要插入的数据
* @param index
* 要插入的下标位置
*/
public void insert(int t, int index) {
//自己完成的作业
// 定义一个新数组,长度是src长度+1
int[] dest = new int[src.length+1 ];
for (int i = 0; i < src.length+1; i++) {
//这里自己要想清楚src。length+1是为什么
//还要一个注意的地方是这个长度的问题
// 如果i<index,则下标对应,如果i>index,
// 则新数组中的下标-1
if (i<index){
dest[i] = src[i];
}else {
dest[i] = src[i-1];
}
dest[index] = t;
}
src = dest;
}
/**
* 修改执行位置的数据
*
* @param t
* 修改后的数据
* @param index
* 要修改的数据的位置
*/
public void replace(int t, int index) {
src[index] = t;
}
/**
* 删除指定位置的数据
*
* @param index
* 要删除的数据下标位置
*/
public void delete(int index) {
// 定义一个新数组,长度是src长度-1
int[] dest = new int[src.length - 1];
for (int i = 0; i < src.length; i++) {
// 如果i<index,则下标对应,如果i>index,
// 则新数组中的下标-1
if (i < index) {
dest[i] = src[i];
} else if (i > index) {
//要注意这里是-1,思路逻辑要清晰
dest[i - 1] = src[i];
}
}
src = dest;
}
}
2 :Array2_1
public class Array2_1 {
private int rongliang = 10;// 初始容量
private int zengzhang = 10;// 每次增长的数量
private int count = 0;// 动态数组中的数据个数
//count是每添加一次数据count加一,也就是每用一次.add方法一次count加一
private int a = 0;//记录初始化数组增长了几次
// 定义一个长度是0的数组,来表示动态数组存放数据的位置
// 初始状态该下,没有任何数据,长度是0
private Integer[] src = new Integer[rongliang];
public Array2_1() {
}
public Array2_1(int rongliang, int zengzhang) {
this.rongliang = rongliang;
this.zengzhang = zengzhang;
}
/**
* 将指定的数据添加到数组中
*
* @param t要添加的数据
*/
public void add(int t) {
// 如果动态数组的长度<容量,
// 则可以直接添加到src从左往右第一个没有数据的位置
//自己注释这是添加一个数据到src的空位置当中去,也就是说添加这个数据动态数组还是短
if (count < src.length) {
src[count] = t;
} else {
// 如果长度>=容量,就定义新的数组,按照增长数量增加
//自己注释,因为等于时,当添加一个数据时候src的长度也不够了
Integer[] dest = new Integer[src.length + zengzhang];
// 按照下标对应位置放到新数组
for (int i = 0; i < src.length; i++) {
dest[i] = src[i];
}
//自己注释,下面这句话可是不能少,很重要的,自己要细心啊
src = dest;
src[count] = t;
a++;
System.out.println("扩容次数"+" "+a);
}
count++;
}
/**
* 获取指定编号的数据
*
* @param index
* 要获取的数据的编号
* @return 取得的数据
*/
public int get(int index) {
// 要获取的数据就在src数组中
return src[index];
}
/**
* 删除指定位置的数据
*
* @param index
* 要删除的数据下标位置
*/
//自己这个是不需要定义新的数组搞的,还有一种是定义一个新的数组来完成,那种比这个好理解
public void delete(int index) {
for(int i=index;i<count-1;i++){
src[i] = src[i+1];
}
//数据往前赶一位,让最后一个数据变成null
src[count-1] = null;
count = count-1;
}
/**
* 获得动态数组中数据的个数 src.length是初始数组的长度,不代表动态数组的长度 动态数组的长度表示src中已经存放的数据个数
*
* @return 返回数据的个数
*/
public int size() {
return count;
}
/**
* 讲指定的数据添加到指定的位置
* @param t要添加的数据
* @param index 要插入的下标位置
*/
public void insert(int t, int index){
if(count<src.length){
for (int i=count;i>=index;i--){
if(i>index){
src[i] = src[i-1];
}else{
src[index] = t;
}
}
count = count+1;
}else{
Integer[] dest = new Integer[src.length + 1];
for(int i=0;i<src.length+1;i++){
if(i<index){
dest[i] = src[i];
}else{
dest[i] = src[i-1];
}
dest[index] = t;
}
src = dest;
count = count+1;
}
}
/**
* 修改执行位置的数据
*
* @param t
* 修改后的数据
* @param index
* 要修改的数据的位置
*/
public void replace(int t, int index) {
src[index] = t;
}
}
相关推荐
VBA动态数组VBA动态数组VBA动态数组VBA动态数组VBA动态数组VBA动态数组VBA动态数组VBA动态数组VBA动态数组
如何在vc中创建动态数组建立一维的,二维的,动态数组
这里说的动态数组是可以根据需要动态增长占用内存的数组,比如程序初始分配了100个元素,可是运行了一段时间后区区100个空间不能满足了,现在需要400个,怎么办呢;那肯定需要再额外分配300个。 C语言有realloc()...
java动态数组java动态数组java动态数组java动态数组java动态数组java动态数组java动态数组java动态数组java动态数组java动态数组
摘要:Delphi源码,系统相关,动态数组,计数机制 本Delphi示例用于说明动态数组的引用计数机制基于变量而非元素。输出结果是这样的: ______________________________________________________ aba aba ...
vc++6.0中动态数组实现(例如string类对象数组等)[文].pdf
多维动态数组(不等宽)多维动态数组(不等宽)多维动态数组(不等宽)多维动态数组(不等宽)多维动态数组(不等宽)多维动态数组(不等宽)多维动态数组(不等宽)
从一个文件中读取数据,然后保存到一个动态的数组中,这个动态数组是动态申请的,而不是静态的数组。
VB 动态数组实例 VB 动态数组实例 VB 动态数组实例
CVector 存放数据的自定义动态数组,采用一维动态数组存储矩阵数据 CMatrix 实现的矩阵类 使用的时候包含#include "Matrix.h"就行 CMatrix的接口函数都在"Matrix.h"里面 CVector的接口函数在"Vector.h"里,"Matrix.h...
动态数组类模板Array C++ //数组类模板声明 template class Array { public: Array(int sz = 50); Array(const Array<T> &A); ~Array(void); Array<T>& operator = (const Array<T> &rhs;); //重载=,使数组...
本文讲述了如何用C语言也能创建动态数组的技巧,通过代码实例来演示分析,让你进一步了解数组的动态创建技巧与代码的艺术。
摘要:Delphi源码,系统相关,动态数组,静态数组 本示例用于演示静态数组变量与动态数组变量的不同。 输出结果是这样的: ______________________________________________________ 256256 4 ____...
利用指针来实现动态数组,求两个集合的交集和并集。(要求用动态数组来实现)依次分别输入数组A、B长度,并输入A,B中元素,即可得到交集并集
C语言动态数组
关于VB中的数组教程,数组的概念,动态数组的建立与声明
动态数组优点是它可以根据程序运行时状态的不同而随时改变容量,本文主要介绍C++中使用类模板实现动态数组
插入排序算法(动态数组实现) printf("--------插入排序算法的实现--------\n"); printf("输入数组的大小length:\n"); int length=0; scanf("%d",&length); /****动态分配内存初始化数组*********************...
顺序表 结构体的动态数组c++指针实现 typedef struct{/*动态顺序表*/ int last,max;/*尾元下标和预留表长*/ DataType *data;/*动态数组的基址*/ }SeqList;
用C语言中的malloc函数和free函数实现的动态数组,分三个文件