/* pino.c */ /* SJ 080598 */ #include #include #include "pino.h" /* pinon toteutukset */ /* talletusrakenne */ struct pino_rakenne { pino_TYYPPI alkio; struct pino_rakenne *edellinen; }; /* luodaan tyhjä pino, palautetaan se */ pino pino_luo() { return (pino)NULL; } /* lisätään pinoon kokonaisluku */ void pino_push(pino *kohdepino, pino_TYYPPI luku) { pino uusi_alkio; uusi_alkio = (pino)malloc(sizeof(struct pino_rakenne)); uusi_alkio->edellinen = *kohdepino; uusi_alkio->alkio = luku; *kohdepino = uusi_alkio; } /* pino_push() */ /* poistetaan pinosta päällimmäinen */ pino_TYYPPI pino_pop(pino *kohdepino) { pino_TYYPPI alkio; pino edellinen; if (kohdepino && *kohdepino) { alkio = (*kohdepino)->alkio; edellinen = (*kohdepino)->edellinen; free(*kohdepino); *kohdepino = edellinen; return alkio; } else { printf("Varoitus, yritys poistaa tyhjästä tai \ luomattomasta pinosta!\n"); return 0; } } /* pino_pop() */ /* testataan pinon tila */ int pino_onko_alkioita(pino *kohdepino) { if (kohdepino && *kohdepino) return 1; else if (kohdepino) return 0; else { printf("Varoitus, yritys testata luomatonta \ pinoa!\n"); return 0; } } /* pino_onko_alkioita() */