• Stack的创建实例以及字符串倒叙的java实现


     1 public class Stack {
     2     
     3     public static void main(String args[])
     4     {
     5         ArrayTest1 arr = new ArrayTest1(10);
     6         
     7         
     8         arr.push(8);
     9         arr.push(7);
    10         arr.push(6);
    11         arr.push(5);
    12         
    13         while(!arr.isEmpty())
    14         {
    15             System.out.print(arr.pop()+" ");
    16         }
    17     }
    18 }
    19 class ArrayTest1
    20 {
    21     private int maxsize;
    22     private long[] a;
    23     private int top;
    24     
    25     public ArrayTest1(int maxsize)
    26     {
    27         this.maxsize = maxsize;
    28         a = new long[this.maxsize];
    29         top = -1;
    30     }
    31     
    32     public void push(long value)
    33     {
    34         a[++top] = value;
    35     }
    36     
    37     public long pop()
    38     {
    39         return a[top--];
    40     }
    41     
    42     public boolean isEmpty()
    43     {
    44         return (top==-1);
    45     }
    46     
    47     public boolean isFull()
    48     {
    49         return (top==maxsize-1);
    50     }
    51     
    52     public long peek()
    53     {
    54         return a[top];
    55     }
    56 }
     
     
     
     
    下面的这段代码是字符串倒叙的java实现,采用了栈的数据结构,不输入字符串则自动退出。用JUnit测试完成,按照提示自动导入JUnit包就可以运行。
      1 import java.io.BufferedReader;
      2 import java.io.IOException;
      3 import java.io.InputStreamReader;
      4 
      5 import org.junit.Test;
      6 
      7 public class Reverse {
      8     private String input;
      9     private String output;
     10     public Reverse(String in)
     11     {
     12         input = in;
     13     }
     14     
     15     public String doRev()
     16     {
     17         int stackSize = input.length();
     18         StackX theStack = new StackX(stackSize);
     19         
     20         for(int j=0;j<input.length();j++)
     21         {
     22             char ch = input.charAt(j);
     23             theStack.push(ch);
     24         }
     25         output="";
     26         while(!theStack.isEmpty())
     27         {
     28             char ch = (char) theStack.pop();
     29             output = output+ch;
     30         }
     31         return output;
     32     }
     33 }
     34 
     35 
     36 class ReverseApp
     37 {
     38     @Test
     39     public static void main(String args[]) throws IOException
     40     {
     41         String input,output;
     42         while(true)
     43         {
     44             System.out.print("enter a string:");
     45             //flush();是流式输入输出常用的一个方法,表示强制请求清空缓冲区,
     46             //让i/o系统立马完成它应该完成的输入、输出动作。
     47             System.out.flush();
     48             input = getString();
     49             if(input.equals(""))
     50                 break;
     51             Reverse theReverser = new Reverse(input);
     52             output = theReverser.doRev();
     53             System.out.println("Reversed:"+output);
     54         }
     55     }
     56     
     57     public static String getString() throws IOException
     58     {
     59         InputStreamReader isr = new InputStreamReader(System.in);
     60         BufferedReader br = new BufferedReader(isr);
     61         String s = br.readLine();
     62         return s;
     63     }
     64     
     65 }
     66 
     67 class StackX1
     68 {
     69     private int maxsize;
     70     private char[] stackArray;
     71     private int top;
     72     
     73     public StackX1(int maxsize)
     74     {
     75         this.maxsize = maxsize;
     76         stackArray = new char[this.maxsize];
     77         top = -1;
     78     }
     79     
     80     public void push(char a)
     81     {
     82         stackArray[++top] = a;
     83     }
     84     
     85     public char pop()
     86     {
     87         return stackArray[top--];
     88     }
     89     
     90     public boolean isEmpty()
     91     {
     92         return (top==-1);
     93     }
     94     
     95     public char peek()
     96     {
     97         return stackArray[top];
     98     }
     99     
    100     public boolean isFull()
    101     {
    102         return (top==maxsize);
    103     }
    104 }
  • 相关阅读:
    Flutter开发指南之理论篇:Dart语法05(单线程模型,事件循环模型,Isolate)
    跨平台将终结
    一万字详解 Redis Cluster Gossip 协议
    Java实现简单的计算器
    CSDN开发者周刊第 22期:谷歌 DeepMind 第四代:不学规则就可以玩游戏;图灵奖得主 Edmund Clarke 因感染“新冠”逝世;
    理解Python闭包,这应该是最好的例子
    sscanf函数用法详解
    web项目中配置多个数据源
    web项目中配置多个数据源
    动态表格之查看、删除、编辑
  • 原文地址:https://www.cnblogs.com/speaklessdomore/p/3658193.html
Copyright © 2020-2023  润新知