g_stack.h

来自「c和指针 学习c语言必须阅读的书籍之一 提高对C语言的掌握理解能力」· C头文件 代码 · 共 45 行

H
45
字号
/*
** GENERIC implementation of a stack with a static array.  The array
** size is given as one of the arguments when the stack is
** instantiated.
*/
#include <assert.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 )			\
	{							\
		assert( !is_full##SUFFIX() );			\
		top_element##SUFFIX += 1;			\
		stack##SUFFIX[ top_element##SUFFIX ] = value;	\
	}							\
								\
	void							\
	pop##SUFFIX( void )					\
	{							\
		assert( !is_empty##SUFFIX() );			\
		top_element##SUFFIX -= 1;			\
	}							\
								\
	STACK_TYPE top##SUFFIX( void )				\
	{							\
		assert( !is_empty##SUFFIX() );			\
		return stack##SUFFIX[ top_element##SUFFIX ];	\
	}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?