資料結構 括號匹配的檢驗C語言

2021-09-26 04:26:31 字數 1708 閱讀 8290

演算法:

-遇到普通字元忽略

所有字元掃瞄完畢,棧為空:成功

匹配失敗或掃瞄完畢,但是棧不為空:失敗

//

// 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 ...