欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java数据结构 - 数组使用,java数据结构,public class

来源: javaer 分享于  点击 9402 次 点评:205

java数据结构 - 数组使用,java数据结构,public class


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中保留该元素        }    }}
相关栏目:

用户点评