利用棧判斷輸入的表示式中括號是否配對

2021-08-21 18:01:35 字數 1042 閱讀 4028

解題思路:

在表示式括號配對時返回true,否則返回false。設定乙個鏈棧st,掃瞄表示式exp,遇到左括號時進棧,遇到右括號時若棧頂為左括號,則出棧,否則返回false。當表示式掃瞄完畢,棧為空時返回true,否則返回false。演算法如下:

#include#include#includeusing namespace std;

#define maxsize 60

typedef char elemtype;

typedef struct sqstack; //定義順序棧型別

//初始化棧

void initstack(sqstack *&s)

//銷毀棧

void destroystack(sqstack *&s)

//判空

bool stackempty(sqstack *s)

//進棧

bool push(sqstack *&s,elemtype e)

//出棧

bool pop(sqstack *&s,elemtype &e)

//取棧頂元素,注意,與出棧的差別僅僅是指標是否減一

bool gettop(sqstack *s,elemtype &e)

//判斷乙個表示式括號是否配對

bool match(string exp){

sqstack *st;

initstack(st); //初始化

char e;

int i=0;

bool match=true; //先假設它是配對的

while(i>exp;

bool flag;

//判斷表示式中的括號是否配對

flag=match(exp);

if(flag)

cout注意:輸入的時候請選擇英文狀態下的「()」輸入

順序棧判斷表示式的括號匹配

如下 include using namespace std typedef struct sqstack 順序棧定義 sqstack void initstack struct sqstack sqstack 初始化棧 intisempty struct sqstack sqstack 判斷棧是否...

表示式括號匹配(棧)

鏈結 假設乙個表示式有英文本母 小寫 運算子 和左右小 圓 括號構成,以 作為表示式的結束符。請編寫乙個程式檢查表示式中的左右圓括號是否匹配,若匹配,則返回 yes 否則返回 no 表示式長度小於255,左圓括號少於20個。一行 表示式 一行 yes 或 no 輸入 1複製 2 x y 1 x 輸出...

「鏈棧」判斷表示式中的括號是否正確配對

問題及 檔名稱 date.cpp 作 者 單昕昕 完成日期 2016年3月31日 版 本 號 v1.0 問題描述 假設表示式中允許包含3中括號 圓括號 中括號和大括號。設計乙個演算法採用 鏈棧 判斷表示式中的括號是否正確配對。程式輸入 乙個字串表示式。程式輸出 括號是否正確配對。include in...