ВУЗ:
Составители:
Рубрика:
151
else q->next->next = q;
p = p->next;
}
q->next = NULL;
}
~stack () {reset ();}
void push (ETYPE c) { h = new elem (c, h); } // Поместить в
стек.
ETYPE pop () { elem *q = h; ETYPE a = h->data; // Извлечь из
стека.
h = h->next; delete q;
return a;
}
ETYPE pop_show () {return h->data;} // Показать вер-
шину.
void reset () { while (h ){ elem *q = h; h = h->next; delete q; }
}
int empty () { return h ? 0:1;}
};
// Конец файла stack.cpp
Приведем задачу, в решении которой удобно использовать стек.
В файле задана строка литер. Требуется проверить баланс скобок
в этой строке.
Баланс соблюдается, если выполнено каждое из следующих усло-
вий:
1) Для каждой открывающей скобки справа от нее есть соответ-
ствующая закрывающая скобка. Наоборот, для каждой закрывающей
скобки слева от нее есть соответствующая открывающая скобка.
2) Соответствующие пары скобок разных типов правильно вло-
жены друг в друга.
Так в строке
{[(a*b)+(n-4)]/[7-sin(x)]+exp(d)}*s
баланс скобок соблюдается, а в строке
[{a+b[i]((x-sin(x))]d)) – нет.
В качестве результата необходимо вывести сообщение о соблю-
дении баланса, а также начало строки до первого по порядку нарушения
баланса скобок.
Страницы
- « первая
- ‹ предыдущая
- …
- 147
- 148
- 149
- 150
- 151
- …
- следующая ›
- последняя »