/*
* iz prvog stoga prebaci u drugi stog
* obrnutim redoslijedom
*
*/
#include <stdio.h>
#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);
}
}