老师布置的作业完成动态数组
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;
}
}
相关推荐
在VC++环境中,动态数组是一种在程序运行时根据需要分配内存的方法,这使得程序员能够根据实际情况灵活地控制数组的大小。动态数组的概念基于C++中的指针和内存管理,特别是new和delete运算符。以下是如何在VC++中...
动态数组在编程中是一种非常重要的数据结构,尤其在VB6.0这种早期的Visual Basic版本中,它提供了灵活的内存管理方式,允许程序员在运行时调整数组的大小。本篇文章将深入探讨动态数组的使用、创建及VB6.0中的实现...
VC++6.0 中动态数组实现 在 VC++6.0 中,动态数组实现是指在运行时动态地分配数组,而不是在编译时固定数组长度。这种实现方式可以让程序在执行时根据需要动态地分配数组长度。 动态数组实现的重要特点是: 1. ...
动态数组是一种在编程中常用的内存管理技术,它允许我们在运行时根据需要调整数组的大小。在C语言中,我们通常通过使用指针和`malloc()`、`realloc()`、`free()`等函数来实现动态数组。下面我们将深入探讨动态数组的...
### 用C语言创建动态数组 在C语言中,数组是一种基本的数据结构,它能够存储相同类型的数据元素。然而,标准C语言中的数组是固定大小的,在声明时必须指定其大小,这限制了它们在某些场景下的应用。例如,当我们不...
在C++和C++ Builder中,动态数组是一种非常重要的数据结构,它允许程序员在程序运行时根据需要分配和管理内存。动态数组与静态数组不同,静态数组在编译时其大小就已经固定,而动态数组则可以在运行时动态改变大小。...
在VB(Visual Basic)编程语言中,动态数组是一种非常重要的数据结构,它允许程序员在运行时根据需要调整数组的大小。动态数组的概念是相对于静态数组而言的,静态数组在声明时必须指定固定的大小,而动态数组则可以...
### 动态数组的实现与重用 #### 引言 在C++编程中,数组是一种常用的数据结构,用于存储相同类型的多个元素。然而,在C++中声明的数组大小一旦确定就无法更改,这种限制在实际开发过程中可能会带来不便。例如,当...
### Java动态数组的应用 在Java编程语言中,动态数组是一种非常重要的数据结构,它能够根据实际需求自动调整其大小,从而有效地存储和管理元素。在本文中,我们将深入探讨Java中的动态数组,包括其实现原理、应用...
在C语言中,动态数组是一种在程序运行时根据需要分配内存的方法,这与静态数组在编译时就确定大小有所不同。动态数组的实现主要依赖于内存管理函数`malloc()`、`calloc()`、`realloc()`和`free()`。下面将详细讨论`...
在C++编程语言中,动态数组是一种非常重要的数据结构,它允许程序员在程序运行时根据需要动态地分配和释放内存。动态数组的概念与传统的静态数组不同,静态数组在编译时就必须确定其大小,而动态数组则可以在运行时...
在C++编程中,动态数组是一种能够根据需要自动调整大小的数组。动态数组类的实现通常基于内存管理,包括分配和释放内存空间。本压缩包包含的“动态数组末班车类源代码”提供了这样一个实现,它是一个泛型类,允许...
根据给定的信息,我们可以总结出以下关于动态数组的知识点: ### 动态数组概述 动态数组是一种可以在运行时改变大小的数组类型。与固定大小的数组不同,动态数组允许在程序执行过程中添加或删除元素,这使得它们...
本教程将深入探讨数组的概念、动态数组的建立与声明,帮助你更好地理解和运用VB中的数组。 首先,我们要理解数组的基本概念。数组是由相同类型的数据元素构成的有序集合,每个元素都有一个唯一的索引,通过这个索引...
动态数组是一种在编程中常用的线性数据结构,它与普通数组相比,具有自动调整大小的能力。在C++中,我们可以创建一个模板类来实现动态数组的功能,以支持各种类型的数据。下面将详细介绍动态数组模版类及其核心功能...
动态数组在C++编程中是一种常见的数据结构,它允许程序员在程序运行时调整数组的大小。与静态数组不同,静态数组在声明时就需要指定固定的大小,而动态数组可以在需要时进行扩展或收缩,提供了更大的灵活性。这个...
本篇文章将详细讲解如何利用动态数组来实现大数阶乘的计算,以及在这个过程中涉及的一些关键知识点。 首先,我们要理解什么是动态数组。动态数组是一种可以在运行时改变其大小的数组,它与静态数组不同,静态数组在...
2. **函数接口设计**:为了在DLL中返回动态数组,函数的返回类型不能直接是动态数组,因为C++不允许返回动态分配的对象。一种常见的解决方法是返回数组的指针,同时通过参数传递数组的大小。例如: ```cpp extern ...
动态数组是一种在编程中常用的内存数据结构,它允许在运行时改变其大小。与固定大小的数组不同,动态数组可以在需要时自动扩展或收缩,从而提供了更大的灵活性。在这个例子中,我们将探讨如何在Linux环境下使用C语言...