/*_############################################################################
_##
_## 用静态数组实现一个泛型的堆栈,数组的长度当堆栈实例化时作为参数给出
_## Author: xwlee
_## Time: 2007.01.02
_## Chang'an University
_## Development condition: win2003 Server+VC6.0
_##
_## stack.h 文件
_##########################################################################*/
#include <stdio.h>
#include <stdlib.h>
#define GENERIC_STACK( STACK_TYPE, SUFFIX, STACK_SIZE ) /
static STACK_TYPE stack##SUFFIX[ STACK_SIZE ]; /
static int top_element##SUFFIX = -1; /
/
int is_empty##SUFFIX( void ) /
{ /
return top_element##SUFFIX == -1; /
} /
/
int is_full##SUFFIX( void ) /
{ /
return top_element##SUFFIX == STACK_SIZE-1; /
} /
/
void push##SUFFIX( STACK_TYPE value ) /
{ /
if( is_full##SUFFIX() == 1 ) /
{ /
printf("stack is already full./n"); /
exit(0); /
} /
top_element##SUFFIX += 1; /
stack##SUFFIX[ top_element##SUFFIX ] = value; /
} /
/
void pop##SUFFIX( void ) /
{ /
if( is_empty##SUFFIX() == 1 ) /
{ /
printf("stack is already full./n"); /
exit(0); /
} /
top_element##SUFFIX -= 1; /
} /
/
STACK_TYPE top##SUFFIX( void ) /
{ /
if( is_empty##SUFFIX() == 1 ) /
{ /
printf("stack is already full./n"); /
exit(0); /
} /
return stack##SUFFIX[ top_element## SUFFIX ]; /
}
_##
_## 用静态数组实现一个泛型的堆栈,数组的长度当堆栈实例化时作为参数给出
_## Author: xwlee
_## Time: 2007.01.02
_## Chang'an University
_## Development condition: win2003 Server+VC6.0
_##
_## stack.h 文件
_##########################################################################*/
#include <stdio.h>
#include <stdlib.h>
#define GENERIC_STACK( STACK_TYPE, SUFFIX, STACK_SIZE ) /
static STACK_TYPE stack##SUFFIX[ STACK_SIZE ]; /
static int top_element##SUFFIX = -1; /
/
int is_empty##SUFFIX( void ) /
{ /
return top_element##SUFFIX == -1; /
} /
/
int is_full##SUFFIX( void ) /
{ /
return top_element##SUFFIX == STACK_SIZE-1; /
} /
/
void push##SUFFIX( STACK_TYPE value ) /
{ /
if( is_full##SUFFIX() == 1 ) /
{ /
printf("stack is already full./n"); /
exit(0); /
} /
top_element##SUFFIX += 1; /
stack##SUFFIX[ top_element##SUFFIX ] = value; /
} /
/
void pop##SUFFIX( void ) /
{ /
if( is_empty##SUFFIX() == 1 ) /
{ /
printf("stack is already full./n"); /
exit(0); /
} /
top_element##SUFFIX -= 1; /
} /
/
STACK_TYPE top##SUFFIX( void ) /
{ /
if( is_empty##SUFFIX() == 1 ) /
{ /
printf("stack is already full./n"); /
exit(0); /
} /
return stack##SUFFIX[ top_element## SUFFIX ]; /
}