数据结构:浅谈数组(代码主要以Java形式展开)

有过代码基础的同学应该都知道:数组是任何一门编程中语最基本的数据结构,可以说数组几乎能表示一切数据结构。其中的重要性不必我多说。每种语言对数组的处理也是有着不同的处理,但是其本质还是对数据的存放,这一点是毋庸置疑的。

先说一下数组的简单声明,每一种编程语言对数组的声明也有着细微的区别,在这里我们主要说的是Java。在Java中,数组的声明主要有两种:
第一种:

数据类型 [] 数组名 = new 数据类型[数组长度];
例如:int []MyArray = new int[5];//声明并实例化了一个长度为5的数组.

在这里 [] 可以放在数组名的前面,也可以放在数组名的后面。但是我们比较习惯于数组名称的前面,这样比较直观。也比较容易理解。
第二种:

数据类型 [] 数组名 = {数组元素1,数组元素2,...};
例如:int [] MyArray = {0,1,2};//声明一个含有元素0,1,2的int型数组.

再说一下数组的访问方式,在数据结构中,数组是存在着下标索引的,通过对下标的索引来得到相应的元素。数组的下标最小标位0,也就是说第一个数组元素的小标为0,第n个数组元素的下标为n-1。

知道了数组的简单用法后,下面我们以类的思想来封装数组,实现最基本的“增删查改”功能。

public class MyArray{
	private int[] Array;//定义一个数组
	private int elems;//定义一个数组的实际有效长度
	private int length;//定义一个数组的最大长度
	
	public MyArray(){ //默认初始化生成一个长度为50的数组.
		elems = 0;
		length = 50;
		Array = new int[length];
	}
	public MyArray(int length){//初始化一个长度为length的数组
		elems = 0;
		this.length = length;
		Array = new int[length];
	}
	
	//获取数组的有效长度.
	public int getsize(){
		return elems;
	}
	
	//显示数组里的所有元素.
	public void display(){
		for(int i = 0;i < elems;i++)
		{
			System.out.print(Array[i]+">>>");
		}
	} 
	
	//添加数组元素
	public void AddNum(int num){
		if(elems != length)
		{
			Array[elems] = num;
			elems++;
		}
		else
			System.out.println("数组越界!");
	}
	
	//根据数组下标获取指定数组元素
	public void getnum(int n){
		if(n > elems||n < 0)
		{
			System.out.println("访问的数组越界!");
		}
		else	
			System.out.println("数组下标为" + n + "的元素为:" + Array[n]);
	}
	
	//在数组内寻找指定的元素
	public int SearchNum(int num){
		int i;
		for(i = 0;i<elems;i++){
			if(Array[i]==num)
			{
				System.out.println("寻找到指定的元素为:" + Array[i]);
				break;
			}		
		}
		if(i == elems)
		{
			return -1;
			System.out.println("访问的元素不在数组内!");
		}
		return i;
	}
	
	//删除数组内的元素.
	public void DelateNum(int num){
		int t = SearchNum(num);
		if(t == -1){
			System.out.println("需要删除的元素不在数组内!");
		}
		else if(t == elems-1)
		{
			elems--;
		}else
		{
			for(int i = k;i<elems-1;i++){
				Array[i] = Array[i+1]
			}
			elems--;
		}
	}
	
	//修改数组内的元素
	public void Modify(int lastnum,int newnum){
		int t = SearchNum(lastnum);
		if(t == -1){
			System.out.println("需要修改的元素不在数组内!");
		}else{
			for(int i = 0;i<elems;i++){
				if(Array[i]==lastnum){
					Array[i]=newnum;
				}
			}
		}
	}	
	public static void main(String[] args){
		MyArray array = new MyArray();
		array.AddNum(1);
		array.AddNum(2);
		array.AddNum(3);
		array.AddNum(4);
		array.AddNum(5);

		System.out.println("数组的长度为:" + array.getsize());
		array.display();
		array.getnum(3);
		System.out.println(array.SearchNum(3));

		array.DelateNum(4);
		array.display();
		System.out.println("删除后数组的长度为:" + array.getsize());

		array.Modify(3, 8);
		array.display();
	}
}

最后我们测试的结果为
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值