private int ArraySize;
private int ArrayLength;
private void GetArray(){
//私有函数,动态分配数组存储空间
Array = new int[ArraySize
];
System.
out.
println("Memory Allocation Error");
}
//构造函数,建立一个最大元素个数为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--)
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++)
ArrayLength--;
return true;
}
}
//将两个数组进行“并”运算
//将数组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++;
}
}
}
//将两个数组进行“交”运算
//求两数组相同元素,存到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/5462