#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define STACK_SIZE 10
#define STACK_EMPTY -1
void push( char [ ] , // input/ouput - the stack
char , // input - data being pushed onto the stack
int *, // input/output - pointer to the index of the top of stack
int ) ; // constant - maximum size of stack
char // output - data being popped out from the stack
pop( char [ ] , // input/output - the stack
int * ) ; // input/output - pointer to the index of the top of stack
void push( char stack[ ] , char item, int * top, int max_size) {
stack[ ++ ( * top) ] = item;
}
char pop( char stack[ ] , int * top) {
return stack[ * top-- ] ;
}
int main( ) {
char s[ STACK_SIZE] ;
int s_top = STACK_EMPTY; // Pointer points to the index of the top of the stack
char randChar = ' ' ;
int i = 0 ;
int j= 0 ;
int randNum = 0 ;
for ( i = 0 ; i < STACK_SIZE; i++ ) {
randNum
= 33 + ( int ) ( rand ( ) % ( ( 126 - 33 ) + 1 ) ) ; randChar = ( char ) randNum;
push( s, randChar, & s_top, STACK_SIZE) ;
printf ( "Random char: %c\n " , randChar
) ;
}
for ( j= STACK_SIZE; j> 0 ; j-- ) {
printf ( "Random chars:%c\n " , pop
( s
, & s_top
) ) ; }
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KI2RlZmluZSBTVEFDS19TSVpFIDEwCiNkZWZpbmUgU1RBQ0tfRU1QVFkgLTEKdm9pZCBwdXNoKGNoYXIgW10sIC8vIGlucHV0L291cHV0IC0gdGhlIHN0YWNrCiAgICAgICAgICBjaGFyLCAgLy8gaW5wdXQgLSBkYXRhIGJlaW5nIHB1c2hlZCBvbnRvIHRoZSBzdGFjawogICAgICAgICAgaW50ICosIC8vIGlucHV0L291dHB1dCAtIHBvaW50ZXIgdG8gdGhlIGluZGV4IG9mIHRoZSB0b3Agb2Ygc3RhY2sKICAgICAgICAgIGludCk7IC8vIGNvbnN0YW50IC0gbWF4aW11bSBzaXplIG9mIHN0YWNrCmNoYXIgICAgIC8vIG91dHB1dCAtIGRhdGEgYmVpbmcgcG9wcGVkIG91dCBmcm9tIHRoZSBzdGFjawpwb3AoY2hhciBbXSwgLy8gaW5wdXQvb3V0cHV0IC0gdGhlIHN0YWNrCiAgICBpbnQgKik7IC8vIGlucHV0L291dHB1dCAtIHBvaW50ZXIgdG8gdGhlIGluZGV4IG9mIHRoZSB0b3Agb2Ygc3RhY2sKdm9pZCBwdXNoKGNoYXIgc3RhY2tbXSxjaGFyIGl0ZW0saW50ICp0b3AsaW50IG1heF9zaXplKXsKICAgIHN0YWNrWysrKCp0b3ApXSA9IGl0ZW07Cn0KY2hhciBwb3AoY2hhciBzdGFja1tdLGludCAqdG9wKXsKICAgIHJldHVybiBzdGFja1sqdG9wLS1dOwp9CmludCBtYWluKCl7CiAgICBjaGFyIHNbU1RBQ0tfU0laRV07CiAgICBpbnQgc190b3AgPSBTVEFDS19FTVBUWTsgLy8gUG9pbnRlciBwb2ludHMgdG8gdGhlIGluZGV4IG9mIHRoZSB0b3Agb2YgdGhlIHN0YWNrCgogICAgY2hhciByYW5kQ2hhciA9ICcgJzsKICAgIGludCBpID0gMDsKICAgIGludCBqPTA7CiAgICBpbnQgcmFuZE51bSA9IDA7CgogICAgc3JhbmQodGltZShOVUxMKSk7CgogICAgZm9yIChpID0gMDsgaSA8IFNUQUNLX1NJWkU7IGkrKyl7CiAgICAgICAgcmFuZE51bSA9IDMzICsgKGludCkocmFuZCgpICUgKCgxMjYtMzMpKyAxICkpOwogICAgICAgIHJhbmRDaGFyID0gKGNoYXIpIHJhbmROdW07CiAgICAgICAgcHVzaChzLHJhbmRDaGFyLCAmc190b3AsIFNUQUNLX1NJWkUpOwoKICAgICAgICBwcmludGYgKCJSYW5kb20gY2hhcjogJWNcbiIsIHJhbmRDaGFyKTsKCiAgICB9CiAgICBwcmludGYoIi0tLS0tLS0tLS0tXG4iKTsKCiAgICBmb3Ioaj1TVEFDS19TSVpFOyBqPjA7IGotLSl7CiAgICAgICAgcHJpbnRmKCJSYW5kb20gY2hhcnM6JWNcbiIsIHBvcChzLCAmc190b3ApKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==