#include<stdio.h>
#include<limits.h>
typedef struct int_stack
{
size_t position;
size_t length;
int* container;
} int_stack;
void initialize(int_stack* stack, int container[], size_t container_size)
{
stack->length = container_size;
stack->position = 0;
stack->container = container;
}
void push(int_stack* stack, int value)
{
if(stack->position < stack->length)
{
stack->container[stack->position++] = value;
}
}
int pop(int_stack* stack)
{
int value = INT_MIN;
if(stack->position > 0)
{
value = stack->container[--stack->position];
}
return value;
}
int main()
{
int_stack stack;
int array[5];
initialize(&stack, array, sizeof(array)/sizeof(array[0]));
push(&stack, 10);
push(&stack, 2);
push(&stack, 6);
push(&stack, 3);
push(&stack,-2);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8bGltaXRzLmg+Cgp0eXBlZGVmIHN0cnVjdCBpbnRfc3RhY2sKewogICAgc2l6ZV90IHBvc2l0aW9uOwogICAgc2l6ZV90IGxlbmd0aDsKICAgIGludCogY29udGFpbmVyOwp9IGludF9zdGFjazsKCnZvaWQgaW5pdGlhbGl6ZShpbnRfc3RhY2sqIHN0YWNrLCBpbnQgY29udGFpbmVyW10sIHNpemVfdCBjb250YWluZXJfc2l6ZSkKewogICAgc3RhY2stPmxlbmd0aCA9IGNvbnRhaW5lcl9zaXplOwogICAgc3RhY2stPnBvc2l0aW9uID0gMDsKICAgIHN0YWNrLT5jb250YWluZXIgPSBjb250YWluZXI7Cn0KCgp2b2lkIHB1c2goaW50X3N0YWNrKiBzdGFjaywgaW50IHZhbHVlKQp7CiAgICBpZihzdGFjay0+cG9zaXRpb24gPCBzdGFjay0+bGVuZ3RoKQogICAgewogICAgICAgIHN0YWNrLT5jb250YWluZXJbc3RhY2stPnBvc2l0aW9uKytdID0gdmFsdWU7CiAgICB9Cn0KCmludCBwb3AoaW50X3N0YWNrKiBzdGFjaykKewogICAgaW50IHZhbHVlID0gSU5UX01JTjsKICAgIGlmKHN0YWNrLT5wb3NpdGlvbiA+IDApCiAgICB7CiAgICAgICAgdmFsdWUgPSBzdGFjay0+Y29udGFpbmVyWy0tc3RhY2stPnBvc2l0aW9uXTsKICAgIH0KICAgIHJldHVybiB2YWx1ZTsKfQoKaW50IG1haW4oKQp7CiAgICBpbnRfc3RhY2sgc3RhY2s7CiAgICBpbnQgYXJyYXlbNV07CgogICAgaW5pdGlhbGl6ZSgmc3RhY2ssIGFycmF5LCBzaXplb2YoYXJyYXkpL3NpemVvZihhcnJheVswXSkpOwogICAgcHVzaCgmc3RhY2ssIDEwKTsKICAgIHB1c2goJnN0YWNrLCAyKTsKICAgIHB1c2goJnN0YWNrLCA2KTsKICAgIHByaW50ZigiJWRcbiIsIHBvcCgmc3RhY2spKTsKICAgIHByaW50ZigiJWRcbiIsIHBvcCgmc3RhY2spKTsKICAgIHB1c2goJnN0YWNrLCAzKTsKICAgIHB1c2goJnN0YWNrLC0yKTsKICAgIHByaW50ZigiJWRcbiIsIHBvcCgmc3RhY2spKTsKICAgIHByaW50ZigiJWRcbiIsIHBvcCgmc3RhY2spKTsKICAgIHByaW50ZigiJWRcbiIsIHBvcCgmc3RhY2spKTsKICAgIHByaW50ZigiJWRcbiIsIHBvcCgmc3RhY2spKTsKICAgIHByaW50ZigiJWRcbiIsIHBvcCgmc3RhY2spKTsKCiAgICByZXR1cm4gMDsKfQo=