演算法:
-遇到普通字元忽略
所有字元掃瞄完畢,棧為空:成功
匹配失敗或掃瞄完畢,但是棧不為空:失敗
//
// created by xuehu96 on 2019-08-09.
//#include
#include
"../linkstack.h"
intisleft
(const
char c)
return ret;
}int
isright
(const
char c)':
case
'\''
:case
'\"'
: ret =1;
break
;default
: ret =0;
}return ret;
}int
match
(const
char left,
const
char right)')
;case
'\''
:return
(right ==
'\'');
case
'\"'
:return
(right ==
'\"');
default
:return0;
}}void
matcherr
(const
char
*str,
int pos)
printf (
"^\n");
}int
scanner
(const
char
*code)
if(isright (code[i]))
char
*tmp =
(char
*) linkstack_pop (stack);if
((!match (
*tmp, code[i]))
||(tmp ==
null))
} i++;}
if(code[i]
=='\0'
&& linkstack_size (stack)==0
)else
if(linkstack_size (stack)!=0
)else
linkstack_destroy (stack)
;return ret;
}/*演算法:
* 遇到普通字元忽略
* 遇到左括號入棧
* 遇到右符號 從棧中彈出棧頂符號,比配
* 匹配成功,繼續掃瞄
* 匹配失敗,停止,報錯
* 結束:
* 所有字元掃瞄完畢,棧為空:成功
* 匹配失敗或掃瞄完畢,但是棧不為空:失敗
* */
intdemo_matchingsymbol()
";const
char
*code =
"typedef struct m a;l* seqlist_create\n";if
(scanner (code)
)return0;
}
資料結構題目 16 括號匹配的檢驗
描述 從鍵盤輸入任意括號序列,程式設計判斷括號是否匹配。假設允許有三種括號 圓括號 方括號和花括號 其巢狀的順序隨意。為了正確檢驗輸入序列的括號匹配問題,要使用棧結構來實現。1 在檢驗演算法中建立乙個棧,讀入圓括號 方括號和大括號組成的序列 2 若是左括號直接入棧,等待同類的右括號與之匹配 若讀入的...
資料結構 棧的應用 括號匹配的檢驗
棧的應用 括號匹配的檢驗 演算法內容 以此掃瞄所有字元,遇到左括號入棧,遇到右括號則彈出棧頂元素檢查是否匹配。匹配失敗的情況 1.左括號單 2.右括號單 3.左右括號不匹配 include include define maxsize 10 定義棧中元素的最大個數 typedef struct sq...
C語言資料結構作業括弧匹配檢驗
假設表示式中允許包含兩種括號 圓括號和方括號,其巢狀的順序隨意,如 或 等為正確的匹配,或 或 均為錯誤的匹配。現在要求檢驗乙個給定表示式中的括弧是否正確匹配。輸入乙個只包含圓括號和方括號的字串,判斷字串中的括號是否匹配,匹配就輸出ok,不匹配就輸出wrong。輸入1 輸出1 ok 輸入2 輸出2 ...