HRBUST 語法檢查 括號匹配 棧

2021-09-25 10:46:14 字數 821 閱讀 6200

time limit: 1000 ms memory limit: 65536 k

有多組測試資料,每組測試資料有一段**,該段**可能在有多行。

每段**以ctrl+z結束。

處理到檔案結束。

每組測試資料輸出一行。

如果這段**括號匹配了,輸出 right ,否則輸出 wrong。

#include right

wrong

description:判斷'(',')',''配對是否合法。

problem solving:這個只需要維護乙個棧就行了,遇到'('、''就判斷棧頂元素是不是與之配對的'('、'*lists;

int len;

lists head, tail;

void alloc(lists &p)

void link()

void push(elemtype e)

void pop()

elemtype top()

int main()

link();

tmp = 0;

for (int i = 0; str[i]; i++)

else pop();

}else if (str[i] == '}')

else pop();}}

}if (tmp || len)

printf("wrong\n");

else printf("right\n");

}return 0;

}

(十一)棧的應用 括號匹配檢查

假設表示式中允許包括 等這種是正確的,如果棧為空,第乙個出現的就是右括號,則直接退出。如果是出現的左括號,則直接壓棧。在後續的過程中只要出現右括號,就判斷棧尾括號是否與之匹配,如果匹配就彈出棧,否則就逃過。最後如果棧為空則說明括號完全匹配,如果棧不為空則說明輸入的括號不是成對或者順序出現錯誤。例如 ...

不用棧檢查小括號 中括號 大括號的匹配

設定三個計數器初值設為零,分別記錄小括號 中括號 大括號。開始進行第一次掃瞄,從左向右依次掃瞄每個字元,遇到左括號計數器加一,遇到右括號計數器減一,出現計數器小於零時,報錯退出。掃瞄結束後,若三個計數器有乙個不為零說明括號不匹配,報錯結束檢查。第一步掃瞄結束,如果正確說明三種括號本身匹配正確。現在可...

括號匹配 棧

蒜頭君在紙上寫了乙個串,只包含 和 乙個 能唯一匹配乙個 但是乙個匹配的 必須出現在 之前。請判斷蒜頭君寫的字串能否括號完全匹配,如果能,輸出配對的括號的位置 匹配的括號不可以交叉,只能巢狀 一行輸入乙個字串只含有 和 輸入的字串長度不大於 50000 如果輸入括號不能匹配,輸出一行 no 否則輸出...