#include<stdio.h>
#include<stdlib.h>
struct stack{
int size;
int top;
int * arr;
} ;
int isempty( struct stack* ptr) {
if ( ptr-> top==- 1 )
{
return 1 ;
}
else {
return 0 ;
}
} ;
int isfull( struct stack* ptr) {
if ( ptr-> top== ptr-> size- 1 )
{
return 1 ;
}
else {
return 0 ;
}
} ;
void push( struct stack* ptr, int n) {
if ( ptr-> top== ptr-> size- 1 ) {
}
else {
ptr-> top++;
ptr-> arr[ ptr-> top] = n;
}
} ;
int pop( struct stack* ptr)
{
if ( ptr-> top==- 1 ) {
}
else {
int n= ptr-> arr[ ptr-> top] ;
ptr-> top--;
return n;
}
} ;
int main( ) {
struct stack
* sp
= ( struct stack
* ) malloc ( sizeof ( struct stack
) ) ; sp-> size= 8 ;
sp-> top=- 1 ;
struct stack
* arr
= ( struct stack
* ) malloc ( sp
-> size
* sizeof ( int ) ) ; printf ( " before pushing stack is empty:%d\n " , isempty
( sp
) ) ; printf ( "before pushing stack is full:%d\n " , isfull
( sp
) ) ; push( sp, 8 ) ;
push( sp, 7 ) ;
push( sp, 89 ) ;
push( sp, 9 ) ;
push( sp, 5 ) ;
printf ( " after pushing stack is empty:%d\n " , isempty
( sp
) ) ; printf ( "after pushing stack is full:%d\n " , isfull
( sp
) ) ; printf ( "the element is pop up in this stack:%d\n " , pop
( sp
) ) ; return 0 ;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CgpzdHJ1Y3Qgc3RhY2t7CiAgICBpbnQgc2l6ZTsKICAgIGludCB0b3A7CiAgICAKICAgIGludCAqYXJyOwp9OwppbnQgaXNlbXB0eShzdHJ1Y3Qgc3RhY2sqcHRyKXsKICAgIGlmKHB0ci0+dG9wPT0tMSkKICAgIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIGVsc2V7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Cn07CmludCBpc2Z1bGwoc3RydWN0IHN0YWNrKnB0cil7CiAgICBpZihwdHItPnRvcD09cHRyLT5zaXplLTEpCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICBlbHNlewogICAgICAgIHJldHVybiAwOwogICAgfQp9Owp2b2lkIHB1c2goc3RydWN0IHN0YWNrKnB0cixpbnQgbil7CiAgICBpZihwdHItPnRvcD09cHRyLT5zaXplLTEpewogICAgICAgIHByaW50Zigic3RhY2sgaXMgb3ZlcmZsb3ciKTsKICAgIH0KICAgIGVsc2V7CiAgICAgICAgcHRyLT50b3ArKzsKICAgICAgICBwdHItPmFycltwdHItPnRvcF09bjsKICAgIH0KfTsKaW50ICBwb3Aoc3RydWN0IHN0YWNrKnB0cikKewogICAgaWYocHRyLT50b3A9PS0xKXsKICAgICAgICBwcmludGYoInN0YWNrIGlzIHVuZGVyZmxvdyIpOwogICAgfQogICAgZWxzZXsKICAgICAgICAKICAgICAgaW50IG49IHB0ci0+YXJyW3B0ci0+dG9wXTsKICAgICAgIHB0ci0+dG9wLS07CiAgICAgICByZXR1cm4gbjsKICAgIH0KfTsKCmludCBtYWluKCl7CiAgICBzdHJ1Y3Qgc3RhY2sqc3A9KHN0cnVjdCBzdGFjayopbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc3RhY2spKTsKICAgIHNwLT5zaXplPTg7CiAgICBzcC0+dG9wPS0xOwogICAKICAgIHN0cnVjdCBzdGFjayAqYXJyPShzdHJ1Y3Qgc3RhY2sqKW1hbGxvYyhzcC0+c2l6ZSpzaXplb2YoaW50KSk7CnByaW50ZigiIGJlZm9yZSBwdXNoaW5nIHN0YWNrIGlzICBlbXB0eTolZFxuIixpc2VtcHR5KHNwKSk7CnByaW50ZigiYmVmb3JlIHB1c2hpbmcgc3RhY2sgaXMgIGZ1bGw6JWRcbiIsaXNmdWxsKHNwKSk7CnB1c2goc3AsOCk7CnB1c2goc3AsNyk7CnB1c2goc3AsODkpOwpwdXNoKHNwLDkpOwpwdXNoKHNwLDUpOwpwcmludGYoIiBhZnRlciBwdXNoaW5nIHN0YWNrIGlzICBlbXB0eTolZFxuIixpc2VtcHR5KHNwKSk7CnByaW50ZigiYWZ0ZXIgcHVzaGluZyBzdGFjayBpcyAgZnVsbDolZFxuIixpc2Z1bGwoc3ApKTsKcHJpbnRmKCJ0aGUgZWxlbWVudCBpcyBwb3AgdXAgaW4gdGhpcyBzdGFjazolZFxuIixwb3Aoc3ApKTsKICAgIHJldHVybiAwOwp9