栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/145878.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号