package cheapter2_2;
public class Homework<E> {
final int initcapacity = 10;
public E[] data;
public int size;
private int capacity;
//构造方法
public Homework(){
data = (E[])new Object[initcapacity];
capacity = initcapacity;
size = 0;
}
//创建线性表
public void CreateList(E[] a) //由a整体建立顺序表
{
int i,k=0;
for (i=0;i<a.length;i++) {
if (size==capacity) //出现上溢出时
updatecapacity(2*size); //扩大容量
data[k]=a[i];
k++; //添加的元素个数增加1
}
size=k; //设置长度
}
//更新容量
public void updatecapacity(int newcapacity){
E[] newdata = (E[]) new Object[newcapacity];
for(int i = 0;i<size;i++)
newdata[i] = data[i];
capacity = newcapacity;
data = newdata;
}
//创建删除方法:删除原线性表中值为负数的值
public void RemoveNegativeNum(Homework E){
for(int j = 0;j<size;j++){
int x = (int) E.data[j];
if(x<0)
data[j] = data[j+1];
size--;
}
if(capacity > initcapacity && size == capacity/4)
updatecapacity(capacity/2);
}
}
//测试类
package cheapter2_2;
public class HomeworkTest {
public static void main(String[] args){
Integer [] a={1,2,-1,-2,3,-3};
Homework<Integer> L1=new Homework<Integer>();
L1.CreateList(a);
System.out.println("删除前L1:"+L1.toString());
L1.RemoveNegativeNum(L1);
System.out.println("删除后L1:"+L1.toString());
Integer [] b={2,-1,-5,6,-7,4,-5,8};
Homework<Integer> L2=new Homework<Integer>();
L1.CreateList(b);
System.out.println("删除前L2:"+L2.toString());
L2.RemoveNegativeNum(L2);
System.out.println("删除后L2:"+L2.toString());
}
}