深入浅析java中的栈结构

深入浅析java中的栈结构?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

为松山等地区用户提供了全套网页设计制作服务,及松山网站建设行业解决方案。主营业务为做网站、网站制作、松山网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

java 数据结构中栈结构应用的两个实例

1、单词逆序。

 要求从控制台读入一串字符,按回车结束输入,同时显示其逆序字符串。

对于颠倒顺序的操作,用栈来解决是很方便的。具体思想是把字符串中的每一个字符按顺序存入栈中,然后再一个一个的从栈中取出。这时就是按照逆序取出的字符串。     

// reverse.java 
// stack used to reverse a string 
// to run this program: C>java ReverseApp 
import java.io.*;         // for I/O 
//////////////////////////////////////////////////////////////// 
class StackX//定义了栈的基本结构和操作 
  { 
  private int maxSize;//栈最大值 
  private char[] stackArray;//栈内用数组存储数据 
  private int top;//当前栈顶标号,从0开始 
//-------------------------------------------------------------- 
  public StackX(int max)  // constructor 
   { 
   maxSize = max; 
   stackArray = new char[maxSize]; 
   top = -1; 
   } 
//-------------------------------------------------------------- 
  public void push(char j) // put item on top of stack 
   { 
   stackArray[++top] = j; 
   } 
//-------------------------------------------------------------- 
  public char pop()     // take item from top of stack 
   { 
   return stackArray[top--]; 
   } 
//-------------------------------------------------------------- 
  public char peek()    // peek at top of stack 
   { 
   return stackArray[top]; 
   } 
//-------------------------------------------------------------- 
  public boolean isEmpty() // true if stack is empty 
   { 
   return (top == -1); 
   } 
//-------------------------------------------------------------- 
  } // end class StackX 
//////////////////////////////////////////////////////////////// 
class Reverser//封装了单词逆序的操作 
  { 
  private String input;        // input string 
  private String output;        // output string 
//-------------------------------------------------------------- 
  public Reverser(String in)      // constructor 
   { input = in; } 
//-------------------------------------------------------------- 
  public String doRev()        // reverse the string 
   { 
   int stackSize = input.length();  // get max stack size 
   StackX theStack = new StackX(stackSize); // make stack 
 
   for(int j=0; j

2.分隔符匹配

有些分割符在编程中一定是成对出现的,例如(),{},和[]等。如果发现有未匹配的分隔符,编译器会报错。因为匹配操作采取就近原则,后输入的分割符优先匹配,具有“后进先出”的特点。这个匹配操作可以用栈来实现。

具体操作是在输入过程中,如果遇到左匹配符,则将左匹配符压入栈中。如果遇到右匹配符,则从栈中取出一个数据,分析其与右匹配符是否相匹配。若匹配,则继续进行,若不匹配,则报错终止。

// brackets.java 
// stacks used to check matching brackets 
// to run this program: C>java bracketsApp 
import java.io.*;         // for I/O 
//////////////////////////////////////////////////////////////// 
class StackX 
  { 
  private int maxSize; 
  private char[] stackArray; 
  private int top; 
//-------------------------------------------------------------- 
  public StackX(int s)    // constructor 
   { 
   maxSize = s; 
   stackArray = new char[maxSize]; 
   top = -1; 
   } 
//-------------------------------------------------------------- 
  public void push(char j) // put item on top of stack 
   { 
   stackArray[++top] = j; 
   } 
//-------------------------------------------------------------- 
  public char pop()     // take item from top of stack 
   { 
   return stackArray[top--]; 
   } 
//-------------------------------------------------------------- 
  public char peek()    // peek at top of stack 
   { 
   return stackArray[top]; 
   } 
//-------------------------------------------------------------- 
  public boolean isEmpty()  // true if stack is empty 
   { 
   return (top == -1); 
   } 
//-------------------------------------------------------------- 
  } // end class StackX 
//////////////////////////////////////////////////////////////// 
class BracketChecker 
  { 
  private String input;          // input string 
//-------------------------------------------------------------- 
  public BracketChecker(String in)    // constructor 
   { input = in; } 
//-------------------------------------------------------------- 
  public void check() 
   { 
   int stackSize = input.length();   // get max stack size 
   StackX theStack = new StackX(stackSize); // make stack 
 
   for(int j=0; j

关于深入浅析java中的栈结构问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


分享标题:深入浅析java中的栈结构
网页链接:http://azwzsj.com/article/jicceh.html