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; }
|