堆栈和队列的相同之处是(34)。
A.元素的进出满足先进后出
B.元素的进出满足后进先出
C.只允许在端点进行插入和删除操作
D.无共同点
出库程序中备料时应本着的原则是()。
A.先进先出,推陈出新
B.先进后出,推陈出新
C.后进后出,推陈出新
D.后进先出,推陈出新
阅读以下应用说明、图和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();
}
}
计算机中的堆栈,通常是指()一部分,但遵循先进后出的规则。
A.通用寄存器
B.虚拟存储器
C.内存
D.外存
下列队列的描述中,正确的是()。
A. 队列属于非线性表
B. 队列在队尾删除数据
C. 队列按“先进后出”进行数据操作
D. 队列按“先进先出”进行数据操作
public class SharedStack(
______int idx=0;
______char[]data=new char[10];
public synchronized void push(char C) {......}
public synchronized void pop{}{......}
}
A) public
B) 不使用修饰符
C) private
D) protected