日期:2014-05-20  浏览次数:20705 次

关于线性表中出入的问题
我是想往数组b中插入一个数据,结果数据插入进去了,可原数组的数据都变成零了,难道是我传值不对?
代码如下,求指导:
Java code
package sequence;

public class SeqList {

    
    int data [];
    int maxSize=10;
    int length;
    public SeqList(){
         data=new int[maxSize]; 
         length=0;
    }
    
    public SeqList(int a[]){
        
        data=new int [maxSize];
        data=a;
        length=a.length;
        
    }
    public void DispList(){
        for(int i=0;i<length;i++){
            System.out.print(data[i]+",");
        }
        System.out.println("\n"+"线性表的长度"+length);
    }
    public String insert(int i,int value){
    
//        i表示数据插入的位置,k表示插入的数据
        data=new int [maxSize];
        if(length==maxSize||i<1||i>length+1){
            return "插入错误";
        }else if(i<=length){
            for(int j=length-1;j>=i-1;j--){
                data[j+1]=data[j];
                
            }
            data[i-1]=value;
            length++;
            
        }
        return "插入成功";
    }
    public static void main(String[] args) {
        int b[]={1,2,3,5,4};
        SeqList s=new SeqList(b);
        s.insert(2, 6);
        s.DispList();
    }
}
执行结果:
0,6,0,0,0,0,
线性表的长度6




------解决方案--------------------
Java code

public SeqList(int a[]){
        
        data=new int [maxSize];
        //data=a;
        for (int i = 0; i<a.length; i++){
            data[i] = a[i];
        }
        length=a.length;
        
    }

public String insert(int i,int value){
    
//        i表示数据插入的位置,k表示插入的数据
        //data=new int [maxSize];
        if(length==maxSize||i<1||i>length+1){
            return "插入错误";
        }else if(i<=length){
            for(int j=length-1;j>=i-1;j--){
                data[j+1]=data[j];
                
            }
            data[i-1]=value;
            length++;
            
        }
        return "插入成功";
    }

------解决方案--------------------
用 System.arraycopy(a,0,data,0,a.length); 替换data=a;

insert() 里 注释掉 data=new int [maxSize];

楼主的问题就是上面这句,data是新定义的了,初始值都是0。
------解决方案--------------------
Java code

    public SeqList(int a[]){
        data = Arrays.copyOf(a, maxSize);
        length=a.length;
        
    }