阅读以下应用说明、图和Java代码,根据要求回答问题1至问题5。 【说明】 Stack类是java. ntil包中专门用来实现栈的工具类。以下Java程序是一个不使用库函数而实现字符串反转的程序。例如,输入:123456,则输出:654321:输入:asdfeg,则输出:gefdsa。 【Java程序】 import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.util.*; public class UseStack extends Applet implements ActionListener { Stack MyStack; Label prompt=new Label('输入要反转字符:'); Button pushBtn=new Button('压栈'); Button popBtn=new Button('弹栈'); //反转 TextField input=new TextField(5); int[] DrawStack =new int[10]; //记录堆栈中数据 int[] PoppedOut=new int[20]; //记录被弹出的数据 int StackCnt=0; //记录模拟堆栈的数组中的数据个数 String msg=' '; public void init() { MyStack=new Stack(); add(prompt); add(input); add(pushBtn); add(popBtn); pushBtn.addActionListener(this); (1) } public void paint(Graphics g) { for (int i=10; i<StackCnt; i++) //模拟显示堆栈内部的数据排列情况 { g.drawRect(50,200-i*20,80,20); g.drawString(Integer.toString(DrawStack[i]),80,215-i*20); } for (int i=0;(2) ) //显示被弹出的数据 g.drawString(Integer.toString(PoppedOut[i]),200+i*20,100); g.drawString('堆栈',70,236); g.drawString('栈底',135,225); g.drawString('栈顶',160,225-StackCnt*20); g.drawString(msg,200,140); } public void actionPerformed( (3) ) { if (e.getAct ionCommand () == '压栈') //压栈操作 { if(StackCnt<10) { MyStack.push(new Integer( (4) )); DrawStack[StackCnt++]=Integer.parseInt(input.getText() ); input.setText (' '); } else msg='输入数据过多,请先弹栈!' } else if (e.getActionCommand () == '弹栈') //弹栈操作 { if( (5) ) { StackCnt--; PoppedOut[PopCnt++]=[(Integer)(MyStack.pop())).intValue(); } else msg='堆栈已空,不能再弹栈!'; } repaint(); } }