java数据结构之顺序表手工实现

以下声明SeqList类表示顺序表,element是一个存放线性表的一位数组,元素类型为T; 
len表示顺序表的长度; 

public class SeqList<T> {  
      
    private Object[] element;               //对象数组,设置成私有成员  
    private int len;                        //顺序表的长度,元素的个数  
      
    public SeqList(int size){               //构造方法,创建容量为size的空表  
        this.element = new Object[size];  
        this.len = 0;  
    }  
    public SeqList(){this(64);}             //seqList构造方法,创建默认的空表  
      
    public boolean isEmpty(){return this.len == 0;}         //判断顺序表是否为空  
      
    public int length(){                    //返回顺序表的长度  
        return this.len;  
    }  
      
    public T get(int i){                    //返回顺序表第i个位置的值  
        if(i>=0&&i<this.len){  
            return (T)this.element[i];  
        }  
        return null;  
    }  
      
    public void set(int i,T x){             //设置顺序表第i个位置的值  
        if(x == null)  
            return;  
        if(i>=0&&i<this.len)  
            this.element[i] = x;  
        else   
            throw new IndexOutOfBoundsException(i+"");          //抛出序号越界异常  
    }  
      
    public String toString(){                 
        String str = "";  
        for(int i=0;i<this.len;i++){  
            str += this.element[i].toString()+" ";  
        }  
        return str;  
    }  
      
    public void insert(int i,T x){              //插入x作为第i个元素  
        if(x == null)  
            return;  
        if(this.len == element.length){         //若数组满,则扩充顺序表容量  
            Object[] temp = this.element;  
            this.element = new Object[temp.length*2];  
            for(int j=0;j<temp.length;j++){  
                this.element[j] = temp[j];  
            }  
        }  
        if(i<0)  
            i=0;  
        if(i>0)  
            i=this.len;  
        for(int j=this.len-1;j>=i;j--){  
            this.element[j+1] = this.element[j];  
        }  
        this.element[i] = x;  
        this.len++;  
    }  
      
    public T remove(int i){                 //删除第i个元素,返回删除的值  
        if(this.len==0||i<0||i>=this.len)  
            return null;  
        T old = (T)this.element[i];  
        for(int j=i;j<this.len-1;j++){  
            this.element[j] = this.element[j+1];  
        }  
        this.len--;  
        return old;  
    }  
      
    public static void main(String[] args){  
        SeqList<String> seq = new SeqList();  
        seq.insert(0, "1");  
        seq.insert(1, "2");  
        seq.insert(2, "3");  
        System.out.print(seq.toString());  
    }  
}  

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值