首页 > 学院 > 开发设计 > 正文

线性表简述

2019-11-15 00:01:01
字体:
来源:转载
供稿:网友
线性表简述一、简单实现增,删,改、查
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());    }}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表