《java数据结构和算法》栈字母逆序

栈只允许访问一个数据项,即最后插入的数据项。用数组实现一个栈如下:

 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;
 }
}

你可能感兴趣的:(《java数据结构和算法》栈字母逆序)