1. 程式人生 > >使用棧實現單詞逆序輸出

使用棧實現單詞逆序輸出

package cn.my.stack;


/** 
 * 用棧實現單詞逆序,需要先設定棧的大小
 * 入棧、出棧、是否棧為空、是否棧已滿、異常提醒
 * @author wangbowen @date 2015年1月7日
 * @version 1.0
 */
public class StackWorlds {
/**
* 棧大小
*/
private int maxSize;
/**
* 棧陣列
*/
private char [] stackArray;
/**
* 頂棧
*/
private int top;
/**
* 帶引數的構造方法
* @param temp
*/
public StackWorlds(int temp){
maxSize =temp;
stackArray = new char[maxSize];
top = -1;

}
    /**
     * 入棧
     * @param num 
     * void
     */
public void push(char num){
//++top 在插入之前遞增
if(isFull()){
System.out.println("棧空間已經用完.....");
}else{
stackArray[++top] = num;
}
}
/**
* 出棧
* @return 
* long
*/
public char pop(){
return stackArray[top--];
}
/**
* 檢視
* @return 
* long
*/
public  long peek(){
return stackArray[top];
}
/**
* 是否為空
* @return 
* boolean
*/
public  boolean isEmpty(){
return (top==-1);
}
/**
* 是否已經棧滿
* @return 
* boolean
*/
public boolean isFull(){
return (top ==maxSize-1);
}
/**
* 獲取棧大小
* @return  maxSize  棧大小
*/
public int getMaxSize() {
return maxSize;
}
/**
* 設定棧大小
* @param  maxSize  棧大小
*/
public void setMaxSize(int maxSize) {
this.maxSize = maxSize;
}
/**
* 獲取棧陣列
* @return  stackArray  棧陣列
*/
public char[] getStackArray() {
return stackArray;
}
/**
* 設定棧陣列
* @param  stackArray  棧陣列
*/
public void setStackArray(char[] stackArray) {
this.stackArray = stackArray;
}
/**
* 獲取頂棧
* @return  top  頂棧
*/
public int getTop() {
return top;
}
/**
* 設定頂棧
* @param  top  頂棧
*/
public void setTop(int top) {
this.top = top;
}

}

package cn.my.stack;


/** 
 * 處理單詞
 * @author wangbowen @date 2015年1月7日
 * @version 1.0
 */
public class Reverser {
   /**
    * 輸入字元
    */
private String inputString;
/**
* 輸出字元
*/
private String outString;
/**
* 帶引數的構造方法
* @param n
*/
public Reverser(String n){
inputString = n ;
}
/**
* 處理單詞的程式
* @return 
* String
*/
public String doRev(){
//獲取棧的大小
int stackSize = inputString.length();
StackWorlds stackX = new StackWorlds(stackSize);
//入棧
for (int i = 0; i < inputString.length(); i++) {

char ch = inputString.charAt(i);
stackX.push(ch);
}
//出棧
outString = "";
while(!stackX.isEmpty()){
char cr = stackX.pop();
outString =outString +cr;
}
return outString;
}

}

package cn.my.stack;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


/** 
 * 測試單詞逆序輸出
 * @author wangbowen @date 2015年1月7日
 * @version 1.0
 */
public class ReverserTest {
/**
 * 獲取當前輸入的字元流
 * @return
 * @throws IOException 
 * String
 */
public static String getReverserString() throws IOException{
InputStreamReader inputStreamReader =new InputStreamReader(System.in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str =bufferedReader.readLine();
return str;

}
public static void main(String[] args) throws IOException {

String inputStr ,outStr;
while(true){
System.out.print("請輸入一個單詞.....");
System.out.flush();
inputStr = getReverserString();
if(inputStr.equals("")){
break;
}else{
Reverser reverser = new Reverser(inputStr);
outStr = reverser.doRev();
System.out.println("逆序之後的單詞:"+outStr);
}
}
}
}

輸出結果:

請輸入一個單詞.....loveyou
逆序之後的單詞:uoyevol
請輸入一個單詞.....