資料結構與演算法(11) 棧習題二

2021-07-31 07:04:05 字數 2472 閱讀 4047

題目:判定字串中開閉分隔符是否匹配

思路: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...