版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fighting123678/article/details/83279937
题目:使用一维数组编码实现一个栈(Stack)类,要求提供以下操作
(1)boolean isEmpty():判断栈当前是否为空;
(2)入栈操作void push(obj):把数据元素obj插入堆栈;
(3)出栈操作Object pop():出栈,并返回删除的数据元素;(4)Object getTop():取堆栈当前栈顶的数据元素并返回;
(5)利用Stack类实现一个方法:输入一个正整数,输出该整数所对应的二进制数。
答案:
import java.util.Scanner;
public class Stack
{
protected Object []o;
protected int len;
protected int top=0;
public Stack(int len)
{
o=new Object[len];//注意初始化的方式,不是Object []o=new Object[len],这样相当于没有初始化;
this.len=len;
for(int i=0;i<len;i++)
o[i]=null;
}
//////////////////判断栈当前是否为空;
public boolean isEmpty()
{
if(top==0) return true;
else return false;
}
/////////////////入栈操作
public void push(Object b)
{
if(top>=len)
{
len+=100;
o=new Object[len];
}
o[top]=b;
top+=1;
}
///////////////出栈,并返回删除的数据元素
public Object pop()
{
if(top==0) return null;
else
{
Object m=o[top-1];
top-=1;
return m;
}
}
////////////////取堆栈当前栈顶的数据元素并返回
public Object getTop()
{
if(top==0) return null;
else return o[top-1];
}
public static void main(String[] args)
{
Stack S=new Stack(50);
Scanner scan=new Scanner(System.in);
int rec=scan.nextInt();
while(rec!=0)
{
int m=rec%2;
S.push(m);
rec/=2;
}
for(int i=S.top-1;i>=0;i--)
{
System.out.print(S.o[i]);
}
}
}
注意:
(1)给数组初始化的方式:o[i]=null;