使用一维数组编码实现一个栈(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;
}
}