栈只允许访问一个数据项,即最后插入的数据项。用数组实现一个栈如下:
class StackX{
private int maxSize;
private long[] stackArray;
private int top;
public StackX(int s){
maxSize = s;
stackArray = new long[maxSize];
top = -1;
}
public void push(long j){
stackArray[++top] = j;
}
public long pop(){
return stackArray[top--];
}
public long peek(){
return stackArray[top];
}
public boolean isEmpty(){
return(top==-1);
}
public boolean isFull(){
return (top == maxSize-1);
}
}
用栈实现从键盘输入字符逆序输出:
public String doRverse(){
int stackSize = input.length();
StackD theStack = new StackD(stackSize);
for(int j=0;j<input.length();j++){
char ch = input.charAt(j);
theStack.push(ch);
}
output = "";
while(!theStack.isEmpty()){
char ch = (char) theStack.pop();
output = output + ch;
}
return output;
}
package Structure;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class StackD{
private int maxSize;
private char[] stackArray;
private int top;
public StackD(int s){
maxSize = s;
stackArray = new char[maxSize];
top = -1;
}
public void push(char j){
stackArray[++top] = j;
}
public long pop(){
return stackArray[top--];
}
public long peek(){
return stackArray[top];
}
public boolean isEmpty(){
return(top==-1);
}
public boolean isFull(){
return (top == maxSize-1);
}
}
class Reverser{
private String input;
private String output;
public Reverser(String in){
input = in;
}
public String doRverse(){
int stackSize = input.length();
StackD theStack = new StackD(stackSize);
for(int j=0;j<input.length();j++){
char ch = input.charAt(j);//返回j处的字符
theStack.push(ch);
}
output = "";
while(!theStack.isEmpty()){
char ch = (char) theStack.pop();
output = output + ch;
}
return output;
}
}
public class reverse {
public static void main(String[] args) throws IOException{
String input,output;
while(true){
System.out.print("Enter a String: ");
System.out.flush();
input = getString();
if(input.equals(""))
break;
Reverser theReverse = new Reverser(input);
output = theReverse.doRverse();
System.out.println("Reversed: "+ output);
}
}
public static String getString()throws IOException{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
return s;
}
}