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

205218_8b4V_2653987.jpg

转载于:https://my.oschina.net/doudoulee/blog/638024

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值