修的了电脑 敲得了代码
     写得了前端 稳得住后端

用栈实现与单词逆序输出Java

栈是基本的数据结构,它遵循后进先出原则(LIFO,即Last In Frist Out),一次只许访问一个元素,即栈顶的元素。在实现生活中,就像一串糖葫芦,只能吃最上面的糖葫芦,吃完第一个后,才能吃第二个。同时,插葫芦也只能从上往下,一个个的插。

在JDK中,util包中有一个用Vector实现的栈,这里我们用数组实现一个简单的栈。它应该包括入栈、出栈、判空、判满、查看栈顶元素等方法,其代码如下:

  1. public class Stack
  2. {
  3.     //数据项、大小、栈顶标志
  4.     private Object[] items;
  5.     private int size;
  6.     private int top;
  7.     public Stack(int size)
  8.     {
  9.         items = new Object[size];
  10.         this.size = size;
  11.         top = 0;
  12.     }
  13.     //判满
  14.     public boolean isFull()
  15.     {
  16.         return top == size;
  17.     }
  18.     //判空
  19.     public boolean isEmpty()
  20.     {
  21.         return top == 0;
  22.     }
  23.     //查看栈顶元素
  24.     public Object peek()
  25.     {
  26.         if(!isEmpty()){
  27.             return items[top-1];
  28.         }
  29.         else
  30.             throw new IndexOutOfBoundsException("the stack is empty");
  31.     }
  32.     //入栈
  33.     public void push(Object item)
  34.     {
  35.         if(!isFull())
  36.             items[top++] = item;
  37.         else
  38.             throw new IndexOutOfBoundsException("the stack is full");
  39.     }
  40.     //出栈
  41.     public Object pop()
  42.     {
  43.         if(!isEmpty()){
  44.             return items[--top];
  45.         }
  46.         else
  47.             throw new IndexOutOfBoundsException("the stack is empty");
  48.     }
  49. }

有了栈,我们要实现单词逆序就相当简单了,其代码如下:

  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. public class ReverseWord
  5. {
  6.     //原始字符串、栈
  7.     private String str;
  8.     private Stack xStack;
  9.     public ReverseWord(String str)
  10.     {
  11.         this.str = str;
  12.         init();
  13.     }
  14.     //初始化栈
  15.     private void init()
  16.     {
  17.         this.xStack = new Stack(str.length());
  18.         for (int i = 0; i < str.length(); i++) {
  19.             xStack.push(str.charAt(i));
  20.         }
  21.     }
  22.     //反转字符串
  23.     public String reverse()
  24.     {
  25.         String out="";
  26.         for (int i = 0; i < str.length(); i++) {
  27.             out =out + xStack.pop();
  28.         }
  29.         return out;
  30.     }
  31.     public static void main(String[] args) throws IOException {
  32.         System.out.println("输入镜子里的字:");
  33.         InputStreamReader isr = new InputStreamReader(System.in);
  34.         BufferedReader br = new BufferedReader(isr);
  35.         String str = br.readLine();
  36.         ReverseWord rw = new ReverseWord(str);
  37.         System.out.println("我想说的是:");
  38.         System.out.println(rw.reverse());
  39.     }
  40. }

运行程序,提示我们“输入镜子里的字”时,输入uoyevol I,回车,显示“我想说的是:I love you”。

  1. 输入镜子里的字:
  2. uoy evol I
  3. 我想的是说:
  4. I love you
赞(0)
未经允许不得转载:流云溪|码农 » 用栈实现与单词逆序输出Java