当前位置:   article > 正文

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

顺序表实验报告java

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

一、实验目的

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

二、实验环境

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

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

三、实验要求及实验内容

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

实现程序:

  1. public class SqListClass<E> {//顺序表泛型类
  2. final int initcapacity = 20;//顺序表初始的容量
  3. public E[] data;//存放顺序表中的元素
  4. public int size;//存放顺序表的长度
  5. private int capacity;//存放顺序表的容量
  6. public SqListClass(){//构造方法,实现data和length的初始化
  7. data = (E[]) new Object[initcapacity];//强转为E类型数组
  8. capacity = initcapacity;
  9. size = 0;//线性表的基本运算算法
  10. }
  11. //建立顺序表
  12. public void add(E e){
  13. data [size]=e;
  14. size ++;
  15. }
  16. //删除算法
  17. public void Delete (int i) throws IllegalAccessException {
  18. if (i<0 || i>size-1){
  19. throw new IllegalAccessException("删陈:位i不在有效范围");
  20. }
  21. for (int j = i; j <size-1 ; j++) {
  22. data[i]= data [j+1];
  23. size--;
  24. }
  25. }
  26. //查找算法
  27. public E GetElem(int i){
  28. if(i<0 || i>size-1){
  29. throw new IllegalArgumentException("查找:位首不在有效范园");
  30. }
  31. return(E) data[i];
  32. }
  33. public int size(){
  34. return size;
  35. }
  36. public boolean NULL(){
  37. if (size == 0){
  38. return true;
  39. }
  40. return false;
  41. }
  42. }

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

实现程序:

  1. public static void main(String[] args) throws IllegalAccessException {
  2. SqListClass<Integer> a = new SqListClass<Integer>();
  3. for (int i = 0; i <20 ; i++) {
  4. a.add(i);
  5. }
  6. for (int i = 0; i <20 ; i++) {
  7. System.out.print(" "+a.GetElem(i));
  8. }
  9. System.out.println();
  10. a.Delete(6);
  11. for (int i = 0; i < a.size; i++) {
  12. System.out.print(" "+a.GetElem(i));
  13. }
  14. System.out.println();
  15. System.out.println("顺序表的元素个数是"+a.size);
  16. System.out.println("顺序表是否为空"+a.NULL());
  17. }

运行结果:

测试

通过!

四、思考题

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

实现程序:

  1. public class Delete<E> {
  2. final int initcapacity = 20;//顺序表初始的容量
  3. public E[] data;//存放顺序表中的元素
  4. public int size;//存放顺序表的长度
  5. private int capacity;//存放顺序表的容量
  6. public Delete(){//构造方法,实现data和length的初始化
  7. data = (E[]) new Object[initcapacity];//强转为E类型数组
  8. capacity = initcapacity;
  9. size = 0;//线性表的基本运算算法
  10. }
  11. //建立顺序表
  12. public void add(E e){
  13. data [size]=e;
  14. size ++;
  15. }
  16. //查找算法
  17. public E GetElem(int i){
  18. if(i<0 || i>size-1){
  19. throw new IllegalArgumentException("查找:位首不在有效范园");
  20. }
  21. return(E) data[i];
  22. }
  23. //删除算法
  24. public void delete (int i,int a) throws IllegalAccessException {
  25. if (i<0 || i>size-1){
  26. throw new IllegalAccessException("删陈:位i不在有效范围");
  27. }
  28. for (int j = i+a; j <size-1 ; j++) {
  29. data[j-a]= data [j];
  30. size--;
  31. }
  32. }
  33. public static void main(String[] args) throws IOException, IllegalAccessException {
  34. Delete<Integer> d = new Delete<>();
  35. for (int i = 0; i <20 ; i++) {
  36. d.add(i);
  37. }
  38. System.out.println("删除前列表");
  39. for (int i = 0; i <20 ; i++) {
  40. System.out.print(" "+d.GetElem(i));
  41. }
  42. System.out.println();
  43. System.out.println("输入删除开始位置");
  44. Scanner d1 = new Scanner(System.in);
  45. int a = d1.nextInt();
  46. System.out.println("输入删除的数量");
  47. int b = d1.nextInt();
  48. d.delete(a-1,b);
  49. System.out.println("删除后列表");
  50. for (int i = 0; i < d.size; i++) {
  51. System.out.print(" "+d.GetElem(i));
  52. }
  53. }
  54. }

运行结果:

测试

通过!

五、报告要求

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

六、实验总结

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/538306
推荐阅读
相关标签
  

闽ICP备14008679号