手把手教你用java语言实现数据结构(—)-----------动态数组

392 阅读2分钟

引论

数据结构对于计算机专业同学特别重要

我们都知道数组最大的缺点:数组长度是固定的。这篇博客就带你使用java语言实现动态数组。

数据结构----存储结构

1、动态数组的添加(末尾添加)

package com.yueqian.shujujiegou;

import java.util.Arrays;

/**
 * 数据结构----------动态数组添加(add操作,将元素添加到数组最后一位)
 * @author LinChi
 *
 */
public class AddArray1 {
	public static void main(String[] args) {
		//创建旧数组
		int[] arr = {1,2,3,4,5,6,7};
		//指定要添加的元素
		int dis = 6;
		//打印添加前数组的元素
		System.out.println("添加前数组的元素"+Arrays.toString(arr));
		//创建新的数组,存放添加后的元素
		int[] newArr = new int[arr.length+1];
		//将旧数组的元素复制到新的数组中
		for(int i = 0;i<arr.length;i++) {
			newArr[i] = arr[i];
		}
		//将要添加的元素添加到数组的最后一个位置
		newArr[arr.length] = dis;
		//将新数组的引用赋值给旧数组
		arr = newArr;
		//打印添加后数组的元素
		System.out.println("添加后数组的元素"+Arrays.toString(arr));
	}
}

2、动态数组的插入(指定索引处的添加)

package com.yueqian.shujujiegou;

import java.util.Arrays;

/**
 * 数据结构-----------------动态指定位置添加数组(insert操作)
 * @author LinChi
 *
 */
public class InsertArray {
	public static void main(String[] args) {
		insert(9,9);
	}
	public static void insert(int index,int element) {
		//创建旧数组
			int[] arr = {1,2,5,6,4,3,8,9,7};
			System.out.println("添加前的数组:"+Arrays.toString(arr));
			//创建新数组
			int[] newArr = new int[arr.length+1];
			//循环新数组
			for(int i = 0;i<arr.length;i++) {
				//要添加元素之前的元素,可以直接将元素赋值给新数组位置处
				if(i<index) {
		                    newArr[i] = arr[i];
				}else {
				    //要添加元素之后的元素,将旧数组的值向新数组i+1位置存放
				    newArr[i+1] = arr[i];
				}
			}
				//将需要添加的元素添加到此位置
				newArr[index] = element;
				//将新数组转换为旧数组
				arr = newArr;
				System.out.println("添加后的数组:"+Arrays.toString(arr));
	}
}

3、动态数组的删除

package com.yueqian.shujujiegou;

import java.util.Arrays;

/**
 *  数据结构------------- 动态删除数组
 * @author LinChi
 *
 */
public class DelArray {
	public static void main(String[] args) {
		//创建数组
		int[] arr = {2,3,1,4,6,7,5,9};
		//定义要删除元素的下标
		int index = 7;
		//打印删除前的数组
		System.out.println("删除前的数组:"+Arrays.toString(arr));
		//创建新数组,存放删除后的元素
		int[] newArr = new int[arr.length-1];
		//使用循环遍历新数组
		for(int i = 0;i<newArr.length;i++) {
			//要删除元素之前的元素,可以直接将元素赋值给新数组位置处
			if(i<index) {
				newArr[i] = arr[i];
			}else {
				//要删除元素之后的元素下标为i+1,赋值给新数组的i位置处
				newArr[i] = arr[i+1];
			}
		}
		//新数组替换旧数组
		arr = newArr;
		//删除后的新数组
		System.out.println("删除后的数组:"+Arrays.toString(arr));
	}
}

关于动态数组的主要方法就讲这么多了,ArrayList集合的实现就是基于动态数组。动态数组的其他方法可以参考我的另一篇博客:

手把手教你用数据结构实现ArrayList:


记得关注作者哦!!!写作不易,贵在坚持!