经典抽象数据类型之堆栈实现(静态数组)

来源:互联网 发布:软件开发部门职位 编辑:程序博客网 时间:2024/06/01 09:20
/*
**author: gooly.oh
**description: 用一个静态数组实现的堆栈
*/


#define STACK_TYPEint
#define STACK_SIZE100 //堆栈中值数量的最大值


static STACK_TYPEstack[STACK_SIZE];
static int top_element = -1; //保存堆栈顶部元素的下标值


/*-----------------------------------------------------------------------
**name: push
**function: 把一个新值压栈
**param: 被压入的值
*/
void push(STACK_TYPE value)
{
assert(!is_full());
stack[++top_element] = value;
}


/*-----------------------------------------------------------------------
**name: pop
**function: 从堆栈中弹出一个值,并将其返回
*/
STACK_TYPE pop(void)
{
assert(!is_empty());
return stack[top_element--];
}


/*-----------------------------------------------------------------------
**name: top
**function: 返回堆栈顶部元素的值,但不对堆栈进行修改
*/
STACK_TYPE top(void)
{
assert(!is_empty());
return stack[top_element];
}


/*-----------------------------------------------------------------------
**name: is_empty
**function: 如果堆栈为空,返回TRUE,否则返回FALSE
*/
int is_empty(void)
{
return top_element == -1;
}


/*-----------------------------------------------------------------------
**name: is_full
**function: 如果堆栈已满,返回TRUE,否则返回FALSE
*/
int is_full(void)
{
return top_element = STACK_SIZE - 1;
}
原创粉丝点击