您的位置:首页 > 理论基础 > 数据结构算法

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

2019-04-21 15:24 417 查看
版权声明: https://blog.csdn.net/weixin_42331530/article/details/89433581

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

先说一下数组的简单声明,每一种编程语言对数组的声明也有着细微的区别,在这里我们主要说的是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();
}
}

最后我们测试的结果为

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: