用Java实现顺序表的基础功能

子类继承抽象类模板实现顺序表相关的一些基本函数

abstract class my_list{

    public abstract void clear();

    public abstract boolean Is_Empty();

    public abstract int List_Len();

    public abstract String Get_Data(int i)throws Exception;

    public abstract void Insert_Data(int i, String s)throws Exception;

    public abstract void Delete_data(int i)throws Exception;

    public abstract int Search_data(String s);

    public abstract void Display();
}

class Seqlist extends my_list {
    private String[] seqlist;
    private int seqlist_length;

    public Seqlist(int maxsize){//类的构造方法,定义一个顺序表
        seqlist_length = 0;
        seqlist = new String[maxsize];
    }

    @Override
    public void clear(){//清空顺序表
        this.seqlist_length = 0;
    }

    @Override
    public boolean Is_Empty(){//判断顺序表是否为空
        if(this.seqlist_length != 0){
            return false;
        }
        return true;
    }

    @Override
    public int List_Len() {//获得顺序表的长度
        return seqlist_length;
    }

    @Override
    public String Get_Data(int i) throws Exception{//按照下表查找顺序表元素
        if(i<0 || i > seqlist_length - 1){
            throw new Exception("要找的元素不存在");
        }
        return seqlist[i];
    }

    @Override
    public void Insert_Data(int i, String s)throws Exception {//将元素插入顺序表
        if(seqlist_length == seqlist.length){
            throw new Exception("顺序表已经满了");
        }
        if(i < 0 || i>seqlist_length){
            throw new Exception("插入位置不合法");
        }
        for(int j = seqlist_length;j>i;j--){
            seqlist[j-1] = seqlist[j];
        }
        seqlist[i] = s;
        seqlist_length++;
    }

    @Override
    public void Delete_data(int i)throws Exception {//顺序表删除元素
        if(seqlist_length == 0){
            throw new Exception("顺序表是空的");
        }
        if(i < 0 || i > seqlist_length){
            throw new Exception("输入位置不合法");
        }
        for(int j = i;j < seqlist_length - 1;j++){
            seqlist[j] = seqlist[j+1];
        }
        seqlist_length--;
    }

    @Override
    public int Search_data(String s) {//查找指定元素
        for(int j = 0;j < seqlist_length;j++){
            if(seqlist[j].equals(s)){
                return j;
            }
        }
        return -1;
    }

    @Override
    public void Display() {//打印顺序表
        for(int i = 0;i < seqlist_length;i++){
            System.out.print(seqlist[i]+" ");
        }
    }
}

public class Main {
    public static void main(String[] args)throws Exception {
        my_list new_mylist = new Seqlist(10);
        new_mylist.Insert_Data(0,"a");//插入五个元素
        new_mylist.Insert_Data(1,"b");
        new_mylist.Insert_Data(2,"c");
        new_mylist.Insert_Data(3,"d");
        new_mylist.Insert_Data(4,"e");

        new_mylist.Delete_data(3);//删除3号位置的元素

        boolean ret = new_mylist.Is_Empty();//查看顺序表是否为空
        System.out.println(ret);

        String ret1 = new_mylist.Get_Data(2);//按照下标查找元素
        System.out.println("2号下表对应的元素是"+ret1);

        int ret2 = new_mylist.Search_data("e");//按照元素查找下标
        System.out.println("e元素的下标是"+ret2);

        int seqlist_Len = new_mylist.List_Len();
        System.out.println("顺序表的长度是"+seqlist_Len);

        new_mylist.Display();//打印顺序表
        new_mylist.clear();//清空瞬息表
    }
}
后续我会用Object数组和继承接口的方式加以改进。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值