山科java实验2-5 使用一维数组编码实现一个栈(Stack)类

xiaoxiao2025-08-02  24

使用一维数组编码实现一个栈(Stack)类,要求提供以下操作:(1)boolean isEmpty():判断栈当前是否为空;(2)入栈操作void push(obj):把数据元素obj插入堆栈;(3)出栈操作Object pop():出栈,并返回删除的数据元素;(4)Object getTop():取堆栈当前栈顶的数据元素并返回;(5)利用Stack类实现一个方法:输入一个正整数,输出该整数所对应的二进制数。

 

关于栈的应用之数值转化:可以看我博客里《栈与队列及其应用C语言实现(数据结构复习最全笔记)》中关于栈的数制转换部分的讲解,也可以看一道题:《十进制转十六进制 (练习栈方法)》

两个博客的链接:

https://blog.csdn.net/weixin_42110638/article/details/83106209

https://blog.csdn.net/weixin_42110638/article/details/83030406

package java实现栈; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Stack stack = new Stack(32); Scanner scanner = new Scanner(System.in); System.out.println("请输入一个正整数:"); int n = scanner.nextInt(); //测试栈 stack.push(n); System.out.println("输出"+stack.getTop()); System.out.println(stack.isEmpty()); stack.pop(); System.out.println(stack.isEmpty()); //求n的二进制数 while(n>0) { stack.push(n%2); n /= 2; } System.out.println("---------"); while(!stack.isEmpty()) { System.out.print(stack.pop()); } scanner.close(); } }

 

package java实现栈; public class Stack { public Object []array; public int length; public int top; public Stack(int length) { this.length = length; array = new Object[length]; top = -1;//初始值top为-1,此时栈空 } public boolean isEmpty() { if(top == -1) return true; else return false; } public void push(Object obj) { if(top != length) { array[top+1]=obj; top++; } else return; } public Object pop() { Object e = null; if(top > -1) { e = array[top]; array[top] = null; top--; } return e; } public Object getTop() { Object e = null; if(top > -1) { e = array[top]; } return e; } }

 

转载请注明原文地址: https://www.6miu.com/read-5034131.html

最新回复(0)