赞
踩
1.掌握栈的抽象数据类型。
2.掌握实现栈的各种操作的算法。
3.理解栈与递归的关系。
⒈ 硬件:每个学生需配备计算机一台。操作系统: Windows;
⒉ 软件:DOS或Windows操作系统+Myeplps;
⒈描述栈的每种操作在顺序栈或链栈上的实现。
2.将建栈、初始化栈、判断栈是否非空、入栈、输出从栈顶到栈底的元素分别定义为5个成员函数,通过主函数实现对上述函数的测试正确性。
3.栈中每个元素为整型,输入数据为一个十进制数,输出其转换后的二进制数。(由高位到低)
实现程序:
1.顺序栈代码实现SqStackClass.java
- public class SqStackClass<E> {
- final int initcapacity=10;//顺序栈泛型类
- private int capacity;//顺序栈的初始容量
- private E[] data;//存放顺序栈中元素
- private int top;//存放栈顶指针
- public SqStackClass(){//构造方法实现data
- data =(E[]) new Object[initcapacity];
- capacity=initcapacity;
- top=-1;
- }
- private void updatecapacity(int newcapacity){
- E[] newdata = (E[]) new Object[newcapacity];
- for(int i=0;i<=top;i++)
- newdata[i]=data[i];
- capacity=newcapacity;
- data=newdata;
- }
- //判断栈是否为空
- public boolean empty(){
- return top==-1;
- }
- //元素e进栈
- public void push(E e){
- //顺序栈空间满时倍增容量
- if(top==capacity-1)
- updatecapacity(2*(top+1));
- top++;
- data[top]=e;
- }
- //出栈操作
- public E pop(){
- if(empty())
- throw new IllegalArgumentException("栈空");
- E e=(E)data[top];
- top--;
- if(capacity>initcapacity&&top+1==capacity/4)
- updatecapacity(capacity/2);
- return e;
- }
- public E peek(){
- if(empty())
- throw new IllegalArgumentException("栈空");
- return (E)data[top];
- }
- //转换
- public void conversion(int n){
- SqStackClass<Integer> s=new SqStackClass<Integer>();
- while (n!=0){
- s.push(n%2);
- n=n/2;
- }
- while (!s.empty()){
- int e=s.pop();
- System.out.println(e);
- }
- }
- }
2.测试代码test.java
- public class test {
- public static void main(String[] args) {
- SqStackClass<Integer> sa = new SqStackClass<>();
- System.out.println("请放进一个十进制数");
- Scanner scr=new Scanner(System.in);
- int i=scr.nextInt();
- System.out.println("二进制数是:");
- sa.conversion(i);
- }
- }
运行结果
测试
通过!
四、报告要求
1.报告要求用专门的实验报告纸书写,字迹清晰,格式规范。
2.报告中应写清姓名、学号、实验日期、实验题目、实验目的、实验要求。
3.报告中应书写源程序,且源程序中要有注释。
4.报告中应包含运行结果及结果分析。如调试通过,请注明‘通过’并写出输入的数据及运行结果;如未调试通过或结果不正确,试分析原因。
5.报告最后包含实验总结和体会。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。