/* * iz prvog stoga prebaci u drugi stog * obrnutim redoslijedom * */ #include #define SIZE 5 int dodaj(int *stavka, int *stog, int n, int *vrh); int skini(int *stavka, int *stog, int *vrh); void izmjeni(int *stog1, int *vrh1, int *stog2, int *vrh2, int n); int main() { int S1[] = {1, 2, 3, 4, 5}; int S2[SIZE]; int vrh1 = 4; int vrh2 = -1; int n = 5; izmjeni(S1, &vrh1, S2, &vrh2, n); // prvi stog printf("%d %d %d %d %d\n", S1[0], S1[1], S1[2], S1[3], S1[4]); // drugi stog printf("%d %d %d %d %d\n", S2[0], S2[1], S2[2], S2[3], S2[4]); getche(); return 0; } int dodaj(int *stavka, int *stog, int n, int *vrh) { if (*vrh > n-1) return 0; (*vrh)++; stog[*vrh] = *stavka; return 1; } int skini(int *stavka, int *stog, int *vrh) { if (*vrh < 0) return 0; *stavka = stog[*vrh]; (*vrh)--; return 1; } void izmjeni(int *stog1, int *vrh1, int *stog2, int *vrh2, int n) { // privremena pohrana int broj; // dok god nije kraj stoga while (*vrh1 > -1) { skini(&broj, stog1, vrh1); dodaj(&broj, stog2, n, vrh2); } }