3 棧的應用

2021-09-13 03:53:45 字數 2234 閱讀 5808

棧的應用很廣,函式的呼叫的底層實現,和實現表示式值得計算,可以實現括號的匹配,和瀏覽器的前進和後退的實現。

import org.junit.test;

import com.ypl.demo.arraystack;

/** *

* 遇到數字直接壓人棧中。 左括號在進入棧中之前元素優先順序最高。

* 左括號在進人棧後優先順序最低。

* 遇到右括號,我們就不斷的彈出字元棧中的元素直到彈出左括號為止。

* 遇到其餘的,我們比較優先順序,如果優先順序高於棧頂的元素,直接壓人棧中。

* * @author ypl

* */

/*** 判斷是不是數字

* * @param s

* @return

*/private boolean isnum(char s)

return false;

} /**

* 將字元轉換成數字

* * @param c

* @return

*/private int translatenum(char c)

@test

public void addvalue()

// 2、如果是運算子

else else if (c == ')')

operatorstack.pop();

} else else

}if (compriority(topc, c) || operatorstack.isempty()) }}

} while(!operatorstack.isempty())

int num=numstack.pop();

system.out.println(num);

} /**

* 計算表示式的值

* * @param num1

* @param c

* @param num2

* @return

*/private int operator(int num1, char c, int num2)

case '-':

case '*':

case '/':

default:

throw new illegalargumentexception("現在不支援該運算子");

} return value;

} /**

* 優先順序的比較 如果棧頂元素的優先順序低,返回true 否則返回false

* * @param topc

* @param c

* @return

*/private boolean compriority(char topc, char c)

if (topc == '(' && c != '(')

return false; }}

public class ******brrower

/*** 表示的是開啟頁面

*/public void open(t url)

/*** 顯示頁面

** @param prefix

* @param url

*/private void showurl(string prefix, t url)

/*** 返回頁面

** @return

*/public t goback()

system.out.println("* cannot go back, no pages behind.");

return null;

}/**

* 前進頁面

** @return

*/public t goforward()

system.out.println("** cannot go forward, no pages ahead.");

return null;

}/**

* 是否能夠返回

** @return

*/public boolean cangoback()

/*** 是否能夠前進

** @return

*/public boolean cangoforward()

/*** 返回當前頁面

*/public void checkcurrentpage()

public static void main(string args)

}

棧的應用3 進製轉換

進製轉換可以使用使用取餘法來實現 基本上是學習程式設計最常見的乙個練習。學習幾個基本的單詞 被除數 dividend 除數 divisor 商 quotient 餘數 remainder function numberconversion num,base 出棧拼接資料 var num stack....

實驗3 棧應用(1

用棧adt應用 對稱符號匹配判斷 輸入一行符號,以 結束,判斷其中的對稱符號是否匹配。對稱符號包括 輸出分為以下幾種情況 1 對稱符號都匹配,輸出 right.2 如果處理到最後出現了失配,則輸出兩行 第一行 matching failure.第二行 loss of right character ...

棧的應用3 迷宮求解問題

看標題就是老計算機問題了,因為計算機的性質,窮舉法是乙個很好的方式,那麼就需要記錄當前點到出口的路徑,這時,棧就派上用場了。1.建立乙個二維陣列maze,0表示可以通過,1表示不行 2.因為有八個方向可以走 別問為什麼是八個,開始聽我也感覺很扯,後來就習慣了 因為每乙個方向都有乙個座標的變化,用二維...