у меня есть строка (char * ch) с круглыми скобками, и я должен:
1) проверить, правильно ли написана строка и правильно ли она сбалансирована, например: "(())" правильно написанои хорошо сбалансирован, в то время как ") ()" ни хорошо написано, ни хорошо сбалансировано
2) возвращает позицию первой круглой скобки, которая отклоняется от этого правила, если строка написана плохо и плохо сбалансирована.
на первый вопрос, все в порядке.мой код, как показано ниже:
int WBalanced(char *ch)
{
stack p; int i;
for (i=0; i<strlen(ch);i++)
{
if(ch[i] == '(')
{
addStack(P, ch[i]);
else if(ch[i] == ')')
{
if(stackEmpty(P) == 0)
unstack(P);
else
return (0);
}
}
}
if(stackEmpty(P)==1)
return (0);
else
return (1);
}
, но по второму вопросу я не очень хорошо понимаю вопрос.если моей строкой является «(()», является ли позиция позицией второй скобки? и если моей строкой является «(() (« какова позиция отклоненной скобки?
спасибо запомощь