数据结构Java(一)实验一 顺序表基本操作的实现

实验一  顺序表基本操作的实现

一、实验目的

  1. 掌握线性表的顺序存贮结构及基本操作,深入了解顺序表的基本特性,以便在实际问题背景下灵活运用它们。
  2. 巩固该存贮结构的构造方法,深入理解和灵活掌握顺序表的插入、删除等操作。

二、实验环境

⒈ 硬件:每个学生需配备计算机一台。操作系统: Windows;

⒉ 软件: Windows操作系统+Myeplips;

三、实验要求及实验内容

⒈设计一个顺序表类,要求:类成员函数包括插入、删除、取数据元素、求数据个数、是否空

实现程序:

public class SqListClass<E> {//顺序表泛型类
    final int initcapacity = 20;//顺序表初始的容量
    public E[] data;//存放顺序表中的元素
    public int size;//存放顺序表的长度
    private int capacity;//存放顺序表的容量
    public SqListClass(){//构造方法,实现data和length的初始化
        data = (E[]) new Object[initcapacity];//强转为E类型数组
        capacity = initcapacity;
        size = 0;//线性表的基本运算算法
    }
    //建立顺序表
    public void add(E e){
        data [size]=e;
        size ++;
    }
    //删除算法
    public void Delete (int i) throws IllegalAccessException {
        if (i<0 || i>size-1){
            throw new IllegalAccessException("删陈:位i不在有效范围");
        }
        for (int j = i; j <size-1 ; j++) {
            data[i]= data [j+1];
            size--;
        }
    }
    //查找算法
    public E GetElem(int i){
        if(i<0 || i>size-1){
            throw  new IllegalArgumentException("查找:位首不在有效范园");
        }
        return(E) data[i];
    }
    public int size(){
        return size;
    }
    public boolean NULL(){
        if (size == 0){
            return true;
        }
        return false;
    }
}

⒉设计一个测试主函数验证类成员函数的正确性。

实现程序:

public static void main(String[] args) throws IllegalAccessException {
    SqListClass<Integer> a = new SqListClass<Integer>();
    for (int i = 0; i <20 ; i++) {
        a.add(i);
    }
    for (int i = 0; i <20 ; i++) {
        System.out.print(" "+a.GetElem(i));
    }
    System.out.println();
    a.Delete(6);
    for (int i = 0; i < a.size; i++) {
        System.out.print(" "+a.GetElem(i));
    }
    System.out.println();
    System.out.println("顺序表的元素个数是"+a.size);
    System.out.println("顺序表是否为空"+a.NULL());
}

运行结果:

测试

通过!

四、思考题

  1. 删除顺序表中自第i个元素起连续k个元素

实现程序:

public class Delete<E> {
    final int initcapacity = 20;//顺序表初始的容量
    public E[] data;//存放顺序表中的元素
    public int size;//存放顺序表的长度
    private int capacity;//存放顺序表的容量
    public Delete(){//构造方法,实现data和length的初始化
        data = (E[]) new Object[initcapacity];//强转为E类型数组
        capacity = initcapacity;
        size = 0;//线性表的基本运算算法
    }
    //建立顺序表
    public void add(E e){
        data [size]=e;
        size ++;
    }
    //查找算法
    public E GetElem(int i){
        if(i<0 || i>size-1){
            throw  new IllegalArgumentException("查找:位首不在有效范园");
        }
        return(E) data[i];
    }
    //删除算法
    public void delete (int i,int a) throws IllegalAccessException {
        if (i<0 || i>size-1){
            throw new IllegalAccessException("删陈:位i不在有效范围");
        }
        for (int j = i+a; j <size-1 ; j++) {
            data[j-a]= data [j];
            size--;
        }
    }
    public static void main(String[] args) throws IOException, IllegalAccessException {
        Delete<Integer> d = new Delete<>();
        for (int i = 0; i <20 ; i++) {
            d.add(i);
        }
        System.out.println("删除前列表");
        for (int i = 0; i <20 ; i++) {
            System.out.print(" "+d.GetElem(i));
        }
        System.out.println();
        System.out.println("输入删除开始位置");
        Scanner d1 = new Scanner(System.in);
        int a = d1.nextInt();
        System.out.println("输入删除的数量");
        int b = d1.nextInt();
        d.delete(a-1,b);
        System.out.println("删除后列表");
        for (int i = 0; i < d.size; i++) {
            System.out.print(" "+d.GetElem(i));
        }
    }
}

运行结果:

测试

通过!

五、报告要求

  1. 报告要求用专门的实验报告纸书写,字迹清晰,格式规范。
  2. 报告中应写清姓名、学号、实验日期、实验题目、实验目的、实验要求。
  3. 报告中应书写源程序,且源程序中要有注释。
  4. 报告中应包含运行结果及结果分析。如调试通过,请注明‘通过’并写出输入的数据及运行结果;如未调试通过或结果不正确,试分析原因。
  5. 报告最后包含实验总结和体会。

六、实验总结

通过本次实验,学习了线性表和线性表的一些基本操作以及了解了顺序表的应用。本次实验是本科目的第一个实现,进行的途中有一些问题,在经历了和室友的讨论和查阅书籍资料最后的到了解决。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小孙同学1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值