棧的應用很廣,函式的呼叫的底層實現,和實現表示式值得計算,可以實現括號的匹配,和瀏覽器的前進和後退的實現。
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.因為有八個方向可以走 別問為什麼是八個,開始聽我也感覺很扯,後來就習慣了 因為每乙個方向都有乙個座標的變化,用二維...