括號匹配 (100/100 分數)
題目描述
棧的應用非常廣泛。請先實現乙個棧模板類(定義已在下面給出),然後利用這個棧類解決下面的問題:
給定乙個字串,長度小於1000,其中只包含左右括號和大小寫英文本母。請編寫程式判斷輸入的字串裡的左右括號是否全部是匹配的,匹配規則即從內到外左括號都與其右邊距離最近的右括號匹配。如匹配,輸出「yes」,否則,輸出「no」。
輸入描述
每個測例輸入乙個字串,長度小於 1000 ,大於 0 。
輸出描述
若輸入字串內的所有括號正確匹配,輸出「yes」,否則輸出「no」。
樣例輸入
((let)(us)(practice)((stack)(template)))
()you(should))(out)put(no)
樣例輸出
yes
no**實現
1.模板類棧
template
class stack
t pop()//將棧頂元素彈出棧
const t & peek() const
//訪問棧頂元素
bool isempty() const
//判斷是否棧空
else
}};template
//這裡不用再寫max=1000,一般預設只寫一次
stack::stack()
注意注釋,預設引數說一遍就行了
(主函式實現
int main()
if (str[i] == ')')
else
if (aa.peek()=='(')}}
if (aa.isempty())
else
}return
0;}
1.考慮多種情況。
(1)若空棧還讀取出),則必定不匹配,直接跳出迴圈(這裡因為多層迴圈所以使用了goto語句)。
(2)若(數量多,則最後棧中會殘餘(
(3)若剛好匹配,最終會是空棧
2.若為情況(2),若不對棧進行清空或對棧類物件進行析構,則殘餘的(會對下一次的結果產生影響,故將stack類構造放到while迴圈內,每一次迴圈結束後會自動析構,避免產生影響。
完整**
#include
#include
using
namespace
std;
template
class stack
t pop()//將棧頂元素彈出棧
const t & peek() const
//訪問棧頂元素
bool isempty() const
//判斷是否棧空
else
}};template
stack::stack()
int main()
if (str[i] == ')')
else
if (aa.peek()=='(')}}
if (aa.isempty())
else
}return
0;}
第九章 模板與群體資料 C9 1 陣列求和
陣列求和 100 100 分數 題目描述 編寫乙個模板函式getsum,接收乙個陣列,返回該陣列所有元素的和。部分 已給出,請將 填補完整。輸入描述 每個測例共 3 行,第一行為兩個整數 n,m n 1,m 1 第二行為 n 個整數,用空格隔開,第三行為 m 個實數,用空格隔開。輸出描述 對每個測例...
c 基礎 (第九章)
結構體型別說明 struct 結構體識別符號 成員變數列表 如果沒有結構體識別符號,則稱為無名結構體型別 引用結構體變數成員 l 結構體變數名.成員名 l 結構體指標名 成員名 l 結構體指標名 成員名 共用體共用體所有變數共用一塊記憶體 定義格式如下 union 共用體識別符號 成員變數列表 列舉...
第九章 資料安全
資料安全概述 資料庫安全 1 資料庫系統執行安全,包括其所在的主機系統安全 2 資料資訊保安,即資料安全 資料安全 指資料的完整性 可用性 保密性和可靠性 資料安全依賴於資料庫管理系統所採用的安全策略 安全模型和安全機制 資料安全所面臨的威脅 1 授權人員的非故意錯誤行為 2 社交工程 3 內部人員...