C语言中用宏设计的“泛型”堆栈(2)

#define p_stack_start(_s, _t, _n)       do{                                 \                                                typedef _t  type_##_s;          \                                                type_##_s   _buf_##_s[_n];      \                                                int         _max_##_s = _n-1;   \                                                int         _top_##_s = -1     #define p_stack_end(_s)                     _max_##_s = 0;_top_##_s = -1;   \                                            }while(0)     #define p_empty(_s)             (_top_##_s < 0)   #define p_full(_s)              (_top_##_s >= _max_##_s)   #define p_push(_s, _x)          (!p_full(_s) ? (_buf_##_s[++(_top_##_s)]= _x, 1) : 0)   #define p_pop(_s)               (!p_empty(_s) ? ((_top_##_s)--, 1) : 0)   #define p_top(_s)               (!p_empty(_s) ? _buf_##_s[_top_##_s] : (type_##_s)0)  

用法如下:

p_stack_start(s1, int, 16);            for(i = 0; i < 16; i++)                p_push(s1, i+1);               for(i = 0; i < 16; i++)            {                printf("[%d]=%d\n", 16-i, p_top(s1));                p_pop(s1);            }        p_stack_end(s1);  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwfzzg.html