棧的應用—算數表達式求值

對於一個帶有括號的算數表達式來說,麻煩的點在於對於括號的處理,在這裏我們使用兩個棧分別存儲運算符和數值然後再對於相應的情況進行處理。

簡單方便起見我們假設表達式中沒有省略任何括號。

對於表達式我們根據四種情況從左到右送入棧中:

1.將操作數送入操作數棧。

2.將運算符壓入運算棧。

3.忽略左括號

4.遇到右括號時,彈出相應運算符合所需運算數,將其結果壓入操作數棧中

其核心代碼如下:

  1. package demo2;  
  2.   
  3. import java.util.Scanner;  
  4. import java.util.Stack;  
  5.   
  6. /** 
  7.  * @description: 
  8.  * @author: zhonghu 
  9.  * @date: 2019-02-10 15:29 
  10.  */  
  11. public class Evaluate {  
  12.     public static void main(String[] args) {  
  13.         //ops棧存放操作數  
  14.         Stack ops=new Stack<>();  
  15.         //vals棧存放數  
  16.         Stack vals=new Stack<>();  
  17.         Scanner sc=new Scanner(System.in);  
  18.         System.out.println("請輸出表達式");  
  19.         String str=sc.nextLine();  
  20.   
  21.         String[] ch=str.split("");  
  22.   
  23.         for(int i=0;i
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章