我想要使括號匹配。需要匹配的是'()','[]','{}'和'[{}]'應該輸出爲true。我不希望它適用於諸如「[{]}」或「[{}」)的情況。雖然,現在我的代碼即使應該是正確的,也不會輸出正確匹配的結果。支架錯誤匹配
代碼(更新):
int booleanBalanceBracket(aStack *theStack){
aStack *balanceStack = NULL;
while(theStack){
if(theStack->token == '[' || theStack->token == '{' || theStack->token == '(')
balanceStack = pushBracket(theStack->token, balanceStack);
else if(theStack->token == ']' || theStack->token == '}' || theStack->token == ')'){
if(balanceStack == NULL)
return 0;
else
balanceStack = popBracket(balanceStack);
}
theStack = theStack->nextItem;
}
if(balanceStack == NULL){
return 1;
}else{
return 0;
}
}
int isMatching(int token1, int token2){
if(token2 == '(' && token1 == ')')
return 1;
else if(token2 == '{' && token1 == '}')
return 1;
else if(token2 == '[' && token1 == ']')
return 1;
else
return 0;
}
您是否嘗試過一個簡單的輸入,然後通過代碼在調試器步進尋找到執行不符合預期的實例? –
最明顯的一點是,如果稍後有匹配,則會遺忘不匹配。一旦發現不匹配,你應該立即保釋。另外,你的代碼看起來太複雜了......只需要一個堆棧,在遇到匹配時丟棄它們。 –