• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

java数据结构 – 数组使用

JAVA相关 水墨上仙 2439次浏览

java数据结构 – 数组使用

public class Array {
    private int[]Array;
    private int ArraySize;
    private int ArrayLength;
    private void GetArray(){
    	//私有函数,动态分配数组存储空间
    	Array = new int[ArraySize];
    	if(Array == null)
    		System.out.println("Memory Allocation Error");
    }
    public Array(int size){
    	//构造函数,建立一个最大元素个数为size的数组
    	if(size <= 0)
    		System.out.println("Invalid Array Size");
    	else{
    		ArraySize = size;
    	    ArrayLength = 0;
    	    GetArray();
    	}
    }
    //求数组元素个数
    public int GetLength(){
    	return ArrayLength;
    }
    public int GetNode(int i){
    	//取数组中第i个结点的值,若存在,则返回该结点的值;
    	//否则返回null;
    	return(i<0||i>ArrayLength)?null:Array[i];
    }
    public int Find(int x){
    	//查找值为x的结点,若找到,则返回结点序号,否则返回-1;
    	for(int i=0; i<ArrayLength; i++)
    		if(Array[i] == x)return i;
    	return -1;
    }
    //在数组第i个位置,插入值为x的结点,若插入成功,返回true;否则返回false;
    public boolean Insert(int x,int i){
    	if(ArrayLength == ArraySize){
    		System.out.println("overflow");
    		return false;
    	}
    	else if(i<0 || i>ArrayLength){
    		System.out.println("position error");
    		return false;
    	}
    	else
    	{
    		for(int j=ArrayLength-1; j>=i; j--)
    			Array[j+1] = Array[j];//后移
    			Array[i] = x;         //插入
    			ArrayLength++;        //数组长度加一
    			return true;
    	}
    }
    //删除第i个元素结点,成功返回true,否则返回false;
    public boolean Remove(int i){
    	if(ArrayLength == 0){
    		System.out.println("Array Is Empty");
    		return false;
    	}
    	else if(i<0 || i>ArrayLength-1){
    		System.out.println("position error");
            return false;
    	}
    	else
    	{
    		for(int j=i; j<ArrayLength-1; j++)
    			Array[j] = Array[j+1];//前移
    		ArrayLength--;
    		return true;
    	}
    }
    //将两个数组进行“并”运算
    public void Union(Array a,Array b){
    	//将数组b合并到a中,重复元素只留一个;
    	int n = a.GetLength();
    	int m = b.GetLength();
    	for(int i=0; i<m; i++){
    		int x = b.GetNode(i); //从b中取出一元素
    		int k = b.Find(x);    //在a中查找同值元素
    		if(k == -1){          //若找不到同值元素
    			a.Insert(x, n);   //则查到a的最后
    			n++;
    		}
    	}
    }
    //将两个数组进行“交”运算
    public void Intersection(Array a,Array b){
    	//求两数组相同元素,存到b中
    	//int n = a.GetLength();
    	int m = b.GetLength();
    	int i = 0;
    	while(i<m){
    		int x = b.GetNode(i); //从b中取出一元素
    		int k = a.Find(x);    //在a中查找等值元素
    		if(k == -1){          //若没有找到等值元素
    			b.Remove(i);      //从b中删除该元素
    			m--;
    		}
        	else i++;             //否则,在b中保留该元素
    	}
    }
}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明java数据结构 – 数组使用
喜欢 (0)
加载中……