码迷,mamicode.com
首页 > 其他好文 > 详细

线性表简述

时间:2015-05-01 23:52:29      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

一、简单实现增,删,改、查

package datatructs;
/**
 * 表接口
 */
public interface LinearList {
    
    boolean isEmpty();//判断线性表是否为空
    int size();   //返回线性表的大小
    Object get(int index); //获取指定索引的元素
    Object set (int index,Object element);//修改指定索引的元素
    
    boolean addForIndex(int index,Object element);//在指定索引位置添加的元素
    
    boolean add(Object element);//在线性表最后添加元素
    
    Object remove(int index); //移除指定位置的元素
    
    void clear(); //清空线性表
    
    
    
    
}

实现类

package datatructs;

public class LinearListImpl implements LinearList {
    //线性表
    private Object [] sList;
    //线性表大小
    private int size;
    
    
    

    public LinearListImpl(int length) {
        if(length<0){
            sList=new Object[10];
        }else{
            sList=new Object[length];
        }
    }
    
    

    public LinearListImpl() {
        //设置默认为10个大小
        this(10);
    }


    /*
     * 检查线性表是否为空
     */
    @Override
    public boolean isEmpty() {
        //如果size=0就说明为空 true,不为0就为false
        return size==0;    
    }
    /*
     * 返回线必表的大小
     */
    @Override
    public int size() {
    
        return size;
    }

        /*
         * 返回指定索引位置的元素
         */
    @Override
    public Object get(int index) {
        
        return sList[index];
    }
    
    
    

    @Override
    public Object set(int index, Object element) {
        //得到原来位置上的元素
        Object old=sList[index];
        //修改
        sList[index]=element;
        //返回原来的值
        return old;  
    }
    /*
     * 检查在指定位置添加元素的,索引是否在范围内
     */
    public void checkIndexForAdd(int index){
        if(index<0 || index>size){
            throw new IndexOutOfBoundsException("要插入的索引不在表的范围内");
        }
    }
    /*
     * 检查在指定索引是否在范围 内
     */
    public void checkIndex(int index){
        if(index>size){
            throw new IndexOutOfBoundsException("要操作的索引不在表的范围内");
        }
    }


    
        /*
         *在指定索引位置添加     
         */
    @Override
    public boolean addForIndex(int index, Object element) {
        checkIndexForAdd(index);
        
        //判断线性表是否还有空间
        if(size()==sList.length){
            //如果为0
            if(sList.length==0){
                //初始化为10
                sList=new Object[10];
            }else{
                //不为空就+1
                //临时表
                Object [] tmp=sList;
                //重新+1 
                this.sList=new Object[sList.length+1];
                //将元素复制过来
                for (int i = 0; i < size; i++) {
                    sList[i]=tmp[i];
                }
            }
        }
        //向后移一位
        for(int i=size-1;i>=index;i--){
            sList[i]=sList[i+1];
        }
        //插入元素
        sList[index]=element;
        size++;
        return true;
    }
    /*
     * 在最后添加元素
     */
    @Override
    public boolean add(Object element) {
        //调用 上面的添加方法
         return addForIndex(size,element);
        
    }
    /*
     * 删除指定索引的元素
     */
    @Override
    public Object remove(int index) {
        checkIndex(index);
        for(int i=index;i<size-1;i++){
            sList[i]=sList[i+1];
        }
        sList[--size]=null;
        //返回要移除的元素
        return sList[index];
    }

    @Override
    public void clear() {
        for (int i = 0; i < size; i++) {
            //将每个值设置为null
            sList[i]=null;
        }
        //将线性表大小设置0
        size=0;

    }

}

 

测试

package datatructs;

public class Demo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        LinearListImpl ll=new LinearListImpl();
        System.out.println("是否为空:  "+ll.isEmpty());
        System.out.println("大小:"+ll.size());
        ll.add("张三");
        ll.add("李四");
        ll.addForIndex(2, "王五");
        
        System.out.println(ll.set(2, "赵六"));
        
        
        
        ll.remove(2);
        for (int i = 0; i < ll.size(); i++) {
            System.out.print("\t第"+i+" 元素 :"+ll.get(i));
        }
        
        ll.clear();
        System.out.println("元素大小:"+ll.size());
        System.out.println("是否为空:  "+ll.isEmpty());
    }

}

 

线性表简述

标签:

原文地址:http://www.cnblogs.com/liunanjava/p/4471360.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!