第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

數(shù)據(jù)結(jié)構(gòu)和算法分析之線性表

1.结构目录



自定义数组越界异常:

/** * @ClassName: OutOfBoundaryException * @Description: TODO  自定义的数组越界的异常* @author 萨摩耶* @date 2018年4月29日 下午3:37:11 *  */@SuppressWarnings("serial")public class OutOfBoundaryException extends Exception{    public OutOfBoundaryException(String message)    {        super(message);    }}

List接口:

/** * @ClassName: List * @Description: TODO 线性表的接口* @author 萨摩耶* @date 2018年4月29日 下午3:31:41 *  */public interface List {    //返回线性表的大小,即数据元素的个数    public int getSize();    //如果线性表为空返回true否则返回false    public boolean isEmpty();    //判断线性表中是否包含数据元素e    public boolean contains(Object e);    //返回数据元素e在线性表中的位置    public int indexOf(Object e);    //将数据元素e插入到线性表中i号位置    public void insert(int i,Object e)throws OutOfBoundaryException;    //将数据元素e插入数据元素obj之前    public boolean insertBefore(Object obj,Object e);    //经数据元素e插入数据元素obj之后    public boolean insertAfter(Object obj,Object e);    //移除位置i的元素    public Object remove(int i)throws OutOfBoundaryException;    //删除线性表中第一个与e相同的元素    public boolean remove(Object e);    //替换线性表中序号为i的数据元素为e返回原数据元素    public Object replace(int i,Object e)throws OutOfBoundaryException;    //返回线性表中序号为i的数据元素    public Object get(int i) throws OutOfBoundaryException;}

strategy配置:(利用Object类型,就会产生一个问题:int类型和String类型的比较)

public interface Strategy {    //判断两个数据元素是否相等    public boolean equal(Object obj1,Object obj2);    //比较两个数据元素的大小    public int compare(Object obj1,Object obj2);}

List接口的实现(ListArray.java):

public class ListArray implements List{    private final int LEN=8;// 数组的默认大小    private Strategy strategy;//数据元素的比较策略    private int size;//线性表中数据元素的个数    private Object[] elements;//数据元素数组    public ListArray(Strategy strategy)    {        this.strategy=strategy;        this.size=0;        elements=new Object[LEN];    }    @Override    public int getSize() {        // TODO Auto-generated method stub        return size;    }    @Override    public boolean isEmpty() {        // TODO Auto-generated method stub        return size==0;    }    @Override    public boolean contains(Object e) {        // TODO Auto-generated method stub        for(int i=0;i<size;i++)        {            if(strategy.equal(e,elements[i]))                return true;        }        return false;    }    @Override    public int indexOf(Object e) {        // TODO Auto-generated method stub        for(int i=0;i<size;i++)        {            if(strategy.equal(e,elements[i]))                return i;        }        return -1;    }    @Override    public void insert(int i, Object e) throws OutOfBoundaryException {        // TODO Auto-generated method stub        if(i<0||i>size)            throw new OutOfBoundaryException("越界" );        if(size>=elements.length)            expandSapce();        for(int j=size;j>i;j--)            elements[j]=elements[j-1];            elements[i]=e;            size++;            return;    }    public void expandSapce()    {        Object[] a=new Object[elements.length*2];        for(int i=0;i<elements.length;i++)        {            a[i]=elements[i];        }        elements=a;    }    @Override    public boolean insertBefore(Object obj, Object e) {        // TODO Auto-generated method stub        int i=indexOf(obj);        if(i<0) return false;        try {            insert(i,e);        } catch (OutOfBoundaryException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        }        return true;    }    @Override    public boolean insertAfter(Object obj, Object e) {        // TODO Auto-generated method stub        int i=indexOf(obj);        if(i<0) return false;        try {            insert(i+1,e);        } catch (OutOfBoundaryException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        }        return true;    }    @Override    public Object remove(int i) throws OutOfBoundaryException {        // TODO Auto-generated method stub        if(i<0||i>size)            throw new OutOfBoundaryException("越界" );        Object obj=elements[i];        for(int j=i;j<size;j++)        {            elements[j]=elements[j+1];        }        elements[--size]=null;        return obj;    }    @Override    public boolean remove(Object e) {        // TODO Auto-generated method stub        int i=indexOf(e);        if(i<0) return false;        try {            remove(i);        } catch (OutOfBoundaryException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        }        return true;    }    @Override    public Object replace(int i, Object e) throws OutOfBoundaryException {        // TODO Auto-generated method stub        if(i<0||i>size)            throw new OutOfBoundaryException("越界" );        Object obj=elements[i];        elements[i]=e;        return obj;    }    @Override    public Object get(int i) throws OutOfBoundaryException {        // TODO Auto-generated method stub        if(i<0||i>size)            throw new OutOfBoundaryException("越界" );        return elements[i];    }}

策略的实现:

/** * @ClassName: IntergerStretegy * @Description: TODO  整数的比较策略* @author 萨摩耶* @date 2018年4月30日 上午9:24:42 *  */public class IntergerStretegy implements Strategy{    @Override    public boolean equal(Object obj1, Object obj2) {        // TODO Auto-generated method stub        if(obj1 instanceof Integer&&obj2 instanceof Integer)        {            if(obj1==obj2)                return true;        }        return false;    }    @Override    public int compare(Object obj1, Object obj2) {        // TODO Auto-generated method stub        return 0;    }}

测试类:


public class Test {    public static void main(String[] args) throws OutOfBoundaryException    {        ListArray la=new ListArray(new IntergerStretegy());        for(int i=0;i<7;i++)        la.insert(i, i+1);        System.out.println(la.get(6));        System.out.println(la.indexOf(5));    }}

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消