⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stk.h

📁 常用数据结构算法代码库
💻 H
字号:
/****************************************************************************
*
*					Copyright (C) 1991 Kendall Bennett.
*							All rights reserved.
*
* Filename:		$RCSfile: stk.h $
* Version:		$Revision: 1.1 $
*
* Language:		ANSI C
* Environment:	any
*
* Description:	Stack maintenance macros. Create downward-growing stacks.
*
* $Id: stk.h 1.1 91/08/16 13:32:27 ROOT_DOS Exp $
*
* Revision History:
* -----------------
*
* $Log:	stk.h $
* Revision 1.1  91/08/16  13:32:27  ROOT_DOS
* Initial revision
* 
****************************************************************************/

#ifndef __STK_H
#define __STK_H

#define	stack_cls			/* No stack class defined! */

#define	stack_dcl(stack,type,size)	typedef type t_##stack;				\
									stack_cls t_##stack stack[size];	\
									stack_cls t_##stack (*p_##stack)	\
												= stack + (size)

#define	stack_clear(stack)	( (p_##stack) = (stack + 					\
											sizeof(stack)/sizeof(*stack)) )

#define	stack_full(stack)	( (p_##stack) <= stack )
#define	stack_empty(stack)	( (p_##stack) >= (stack + \
											sizeof(stack)/sizeof(*stack)) )

#define	stack_ele(stack)	((sizeof(stack)/sizeof(*stack)) -			\
											(p_##stack-stack))

#define	stack_item(stack,offset) ( *(p_##stack + (offset)) )
#define	stack_p(stack)		p_##stack

#define	push_(stack,x)		( *--p_##stack = (x) )
#define	pop_(stack)			( *p_##stack++ )

#define	push(stack,x)		( stack_full(stack)							\
								? ((t_##stack) (long) (stack_err(1)))	\
								: push_(stack,x))

#define	pop(stack)			( stack_empty(stack)						\
								? ((t_##stack) (long) (stack_err(0)))	\
								: pop_(stack))

#define	popn_(stack,amt)	( (p_##stack += amt)[-amt] )
#define	popn(stack,amt)		( (stack_ele(stack) < amt)					\
								? ((t_##stack) (long) (stack_err(0)))	\
								: popn_(stack,amt))

#define	stack_err(o)		((o) ? ferr("Stack overflow\n")				\
								 : ferr("Stack underflow\n"))

#endif

⌨️ 快捷键说明

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