/* Esimerkki S1. 22.8.2000 Matti Meriläinen Kaikki käytössä olevat pinon perusoperaatiot: alustaminen, lisäys ja poisto, satunnainen luominen, vertailu, tulostus, tyypin palauttaminen ja tyhjyyden vertailu. */ #include "TRA.h" void Oma_tulostus(STACK S, ELEMENT E) { STACK T, U; printf("Alkuperäinen pino:\n"); STACK_PRINT(S); STACK_CREATE(T, STACK_TYPE(S)); STACK_CREATE(U, STACK_TYPE(S)); while (!STACK_EMPTY(S)) { if(STACK_LESS(S, STACK_TOP(S), E) || STACK_SAME(S, STACK_TOP(S), E)) STACK_PUSH(T, STACK_TOP(S)); else STACK_PUSH(U, STACK_TOP(S)); STACK_POP(S); } printf("\nJakoalkiota pienemmät tai yhtä suuret: \n"); STACK_PRINT(T); printf("\nJakoalkiota suuremmat:\n"); STACK_PRINT(U); putchar('\n'); STACK_FREE(T); STACK_FREE(U); } int main() { STACK S; IS_CREATE(S); STACK_CONSTRUCT_RANDOM(S, 20, 1, 20); printf("Jakoalkio : 11\n"); Oma_tulostus(S, INT_ELEMENT(11)); IS_FREE(S); return 0; }