Załózmy, ze pole „dane” jest typu znakowego i moze przechowywac znaki: ’+’, ’-’ (dwuargumentowy),
’*’, ’/’, ’a’ - ’z’. Wówczas lista moze reprezentowac wyrazenie arytmetyczne w zapisie
przedrostkowym (w notacji polskiej).
Napisz funkcje, która wypisze w notacji tradycyjnej (w zapisie wrostkowym) wyrazenie arytmetyczne
zapisane w liscie w notacji polskiej.
string print(elem *lista)
Napisz funkcje sprawdzajaca, czy lista reprezentuje poprawnie skonstruowane wyrazenie w takiej
beznawiasowej notacji.
bool accepts(elem *lista).
struct elemM {
char dane;
elemM *nast;
elemM *poprz;
};
string printM(elemM* lista) {
if (!lista) return "Bład...";
string w = "";
char znak;
bool c = true;
int liczruch = 0;
while (lista != NULL) {
znak = lista->dane;
if (znak != '$') {
if (((znak < 132 && znak > 96) || isdigit(znak)) && c) {
w = w + znak;
c = false;
} else {
elemM* tym = lista;
while ((tym->dane < 132 && tym->dane > 96) || isdigit(tym->dane)) {
tym = tym->nast;
}
if (tym->dane != '$') {
w = w + tym->dane;
tym->dane = '$';
}
c = true;
}
}
if (c) lista = lista->nast;
}
return w;
}
Offline