当前位置:   article > 正文

数据结构Java(一)实验三 栈的应用_数据结构java版的实验目的

数据结构java版的实验目的

实验三  栈的应用

一、实验目的

1.掌握栈的抽象数据类型。

2.掌握实现栈的各种操作的算法。

3.理解栈与递归的关系。

二、实验环境

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

⒉ 软件:DOS或Windows操作系统+Myeplps;

三、实验要求及实验内容

⒈描述栈的每种操作在顺序栈或链栈上的实现。

2.将建栈、初始化栈、判断栈是否非空、入栈、输出从栈顶到栈底的元素分别定义为5个成员函数,通过主函数实现对上述函数的测试正确性。

3.栈中每个元素为整型,输入数据为一个十进制数,输出其转换后的二进制数。(由高位到低)

实现程序:

1.顺序栈代码实现SqStackClass.java

  1. public class SqStackClass<E> {
  2. final int initcapacity=10;//顺序栈泛型类
  3. private int capacity;//顺序栈的初始容量
  4. private E[] data;//存放顺序栈中元素
  5. private int top;//存放栈顶指针
  6. public SqStackClass(){//构造方法实现data
  7. data =(E[]) new Object[initcapacity];
  8. capacity=initcapacity;
  9. top=-1;
  10. }
  11. private void updatecapacity(int newcapacity){
  12. E[] newdata = (E[]) new Object[newcapacity];
  13. for(int i=0;i<=top;i++)
  14. newdata[i]=data[i];
  15. capacity=newcapacity;
  16. data=newdata;
  17. }
  18. //判断栈是否为空
  19. public boolean empty(){
  20. return top==-1;
  21. }
  22. //元素e进栈
  23. public void push(E e){
  24. //顺序栈空间满时倍增容量
  25. if(top==capacity-1)
  26. updatecapacity(2*(top+1));
  27. top++;
  28. data[top]=e;
  29. }
  30. //出栈操作
  31. public E pop(){
  32. if(empty())
  33. throw new IllegalArgumentException("栈空");
  34. E e=(E)data[top];
  35. top--;
  36. if(capacity>initcapacity&&top+1==capacity/4)
  37. updatecapacity(capacity/2);
  38. return e;
  39. }
  40. public E peek(){
  41. if(empty())
  42. throw new IllegalArgumentException("栈空");
  43. return (E)data[top];
  44. }
  45. //转换
  46. public void conversion(int n){
  47. SqStackClass<Integer> s=new SqStackClass<Integer>();
  48. while (n!=0){
  49. s.push(n%2);
  50. n=n/2;
  51. }
  52. while (!s.empty()){
  53. int e=s.pop();
  54. System.out.println(e);
  55. }
  56. }
  57. }

2.测试代码test.java

  1. public class test {
  2. public static void main(String[] args) {
  3. SqStackClass<Integer> sa = new SqStackClass<>();
  4. System.out.println("请放进一个十进制数");
  5. Scanner scr=new Scanner(System.in);
  6. int i=scr.nextInt();
  7. System.out.println("二进制数是:");
  8. sa.conversion(i);
  9. }
  10. }

运行结果

测试

通过!

  四、报告要求

1.报告要求用专门的实验报告纸书写,字迹清晰,格式规范。

2.报告中应写清姓名、学号、实验日期、实验题目、实验目的、实验要求。

3.报告中应书写源程序,且源程序中要有注释。

4.报告中应包含运行结果及结果分析。如调试通过,请注明‘通过’并写出输入的数据及运行结果;如未调试通过或结果不正确,试分析原因。

5.报告最后包含实验总结和体会。

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

闽ICP备14008679号