[Java] java数据结构 - 数组使用 →→→→→进入此内容的聊天室

来自 , 2019-09-23, 写在 Java, 查看 179 次.
URL http://www.code666.cn/view/cb5f9844
  1. public class Array {
  2.     private int[]Array;
  3.     private int ArraySize;
  4.     private int ArrayLength;
  5.     private void GetArray(){
  6.         //私有函数,动态分配数组存储空间
  7.         Array = new int[ArraySize];
  8.         if(Array == null)
  9.                 System.out.println("Memory Allocation Error");
  10.     }
  11.     public Array(int size){
  12.         //构造函数,建立一个最大元素个数为size的数组
  13.         if(size <= 0)
  14.                 System.out.println("Invalid Array Size");
  15.         else{
  16.                 ArraySize = size;
  17.             ArrayLength = 0;
  18.             GetArray();
  19.         }
  20.     }
  21.     //求数组元素个数
  22.     public int GetLength(){
  23.         return ArrayLength;
  24.     }
  25.     public int GetNode(int i){
  26.         //取数组中第i个结点的值,若存在,则返回该结点的值;
  27.         //否则返回null;
  28.         return(i<0||i>ArrayLength)?null:Array[i];
  29.     }
  30.     public int Find(int x){
  31.         //查找值为x的结点,若找到,则返回结点序号,否则返回-1;
  32.         for(int i=0; i<ArrayLength; i++)
  33.                 if(Array[i] == x)return i;
  34.         return -1;
  35.     }
  36.     //在数组第i个位置,插入值为x的结点,若插入成功,返回true;否则返回false;
  37.     public boolean Insert(int x,int i){
  38.         if(ArrayLength == ArraySize){
  39.                 System.out.println("overflow");
  40.                 return false;
  41.         }
  42.         else if(i<0 || i>ArrayLength){
  43.                 System.out.println("position error");
  44.                 return false;
  45.         }
  46.         else
  47.         {
  48.                 for(int j=ArrayLength-1; j>=i; j--)
  49.                         Array[j+1] = Array[j];//后移
  50.                         Array[i] = x;         //插入
  51.                         ArrayLength++;        //数组长度加一
  52.                         return true;
  53.         }
  54.     }
  55.     //删除第i个元素结点,成功返回true,否则返回false;
  56.     public boolean Remove(int i){
  57.         if(ArrayLength == 0){
  58.                 System.out.println("Array Is Empty");
  59.                 return false;
  60.         }
  61.         else if(i<0 || i>ArrayLength-1){
  62.                 System.out.println("position error");
  63.             return false;
  64.         }
  65.         else
  66.         {
  67.                 for(int j=i; j<ArrayLength-1; j++)
  68.                         Array[j] = Array[j+1];//前移
  69.                 ArrayLength--;
  70.                 return true;
  71.         }
  72.     }
  73.     //将两个数组进行“并”运算
  74.     public void Union(Array a,Array b){
  75.         //将数组b合并到a中,重复元素只留一个;
  76.         int n = a.GetLength();
  77.         int m = b.GetLength();
  78.         for(int i=0; i<m; i++){
  79.                 int x = b.GetNode(i); //从b中取出一元素
  80.                 int k = b.Find(x);    //在a中查找同值元素
  81.                 if(k == -1){          //若找不到同值元素
  82.                         a.Insert(x, n);   //则查到a的最后
  83.                         n++;
  84.                 }
  85.         }
  86.     }
  87.     //将两个数组进行“交”运算
  88.     public void Intersection(Array a,Array b){
  89.         //求两数组相同元素,存到b中
  90.         //int n = a.GetLength();
  91.         int m = b.GetLength();
  92.         int i = 0;
  93.         while(i<m){
  94.                 int x = b.GetNode(i); //从b中取出一元素
  95.                 int k = a.Find(x);    //在a中查找等值元素
  96.                 if(k == -1){          //若没有找到等值元素
  97.                         b.Remove(i);      //从b中删除该元素
  98.                         m--;
  99.                 }
  100.                 else i++;             //否则,在b中保留该元素
  101.         }
  102.     }
  103. }
  104.  
  105. //java/5462

回复 "java数据结构 - 数组使用"

这儿你可以回复上面这条便签

captcha