題目:判定字串中開閉分隔符是否匹配
思路:1.分解字串成字元陣列,並建立乙個棧
2.如果讀取的字元不是開閉分隔符,直接忽略
如果讀取的字元是開分隔符則壓棧
如果讀取的字元是閉分隔符,且棧不為空,棧頂元素出棧,否則提示匹配錯誤
3.如果出棧的開分隔符與讀取的閉分隔符不匹配,提示匹配錯誤
4.字串處理完後,如果棧不為空,則提示匹配錯誤
/**
* 判定字串中開閉分隔符是否匹配
*@param string 需要判斷的字串
*@return true 分隔符匹配 false 分隔符不匹配
*/public
static
boolean
ismatch(string string)
// 3.2 如果為閉分隔符且棧不為空則出棧,否則提示匹配錯誤
if (')' == chars[i] || '}' == chars[i] || ']' == chars[i]) else
break;
case
'}':
if ('
break;
case
')':
if ('(' != temp)
break;
default:
break;}}
}}
// 4.字元陣列處理完,如果棧不為空,說明棧內有多餘的開分隔符,提示匹配出錯
if (!stack.isempty())
return
true;
}
題目:中綴表示式轉換成字尾表示式
性質:觀察中綴表示式2+3*4和字尾表示式234*+
兩種表示式的運算元次序相同,但操作符不同
思路:1.棧中只儲存"("和運算子
2.在遇到")"時,從棧中彈出運算子,直到"("出棧;但"("不輸出
3.在比較運算子優先順序時,只要棧頂運算子優先順序不低於讀取的運算子,就出棧
4.要保證棧最後為空
/**
* 中綴表示式轉換成字尾表示式
*@param infix 中綴表示式
*@return 字尾表示式
*/public
static string infixtopostfix(string infix)
stack.push(chars[i]);
break;
case
')':
while (stack.top() != '(')
// 將"("彈出
stack.pop();
break;
default:
break;}}
// 5.字元陣列遍歷完,如果棧不為空,說明棧內還有運算子
while (!stack.isempty())
return postfix.tostring();
}/**
* 運算子比較優先順序
*@param stacksymbol 棧中運算子
*@param symbol 讀取的運算子
*@return true 棧中優先順序高 false 讀取的運算子優先順序高
*/public
static
boolean
compare(char stacksymbol, char symbol)
return
true;
}return
false;
}
運算子以及其優先順序通過列舉型別實現,如下:
public
enum operatorenum
/*** 獲取運算子的對應優先順序
*@param operator 運算子
*@return 對應的優先順序
*/public
static
intpriorityof(char operator)
}return operator;
}/**
*@return the operator
*/public character getoperator()
/***@param operator the operator to set
*/public
void
setoperator(character operator)
/***@return the priority
*/public
intgetpriority()
/***@param priority the priority to set
*/public
void
setpriority(int priority)
}
資料結構與演算法(10) 棧習題一
題目 回文字串判斷,就是乙個字串,從左到右讀和從右到左讀是完全一樣的 例如 abcdedcba就是回文 字串回文判斷 param str 需要判斷的字串 return true 是回文 false 不是回文 public static boolean ispalindrome string str ...
(二)學習資料結構與演算法 棧
棧是資料結構中最基本的一種結構,對於資料來說,很多時候都是對資料的增 刪 查 改 1.棧在生活中的常見例子 一摞書 堆盤子 2.棧的特點 先進後出 fist in last out,filo 3.棧的實現 1 建立棧 function stack 2 棧中宣告的方法 增 push element s...
資料結構與演算法 二 (棧 佇列)
這篇筆記主要寫棧和佇列,因為他們的特點是相反的 一 棧特點 先進後出,類似於子彈入彈夾,先進去的子彈最後才發射 這裡也使用陣列來模擬一下,有四個方法,壓棧,取棧,檢視棧頂,是否為空 棧的底層我們使用陣列來儲存資料 int elements public stacktest1 壓棧 壓入元素 publ...