赞
踩
⒈ 硬件:每个学生需配备计算机一台。操作系统: 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());
- }
运行结果:
测试
通过!
实现程序:
- 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));
- }
- }
- }
运行结果:
测试
通过!
六、实验总结
通过本次实验,学习了线性表和线性表的一些基本操作以及了解了顺序表的应用。本次实验是本科目的第一个实现,进行的途中有一些问题,在经历了和室友的讨论和查阅书籍资料最后的到了解决。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。