经典抽象数据类型之堆栈实现(静态数组)
2013-04-11 10:54
309 查看
/*
**author: gooly.oh
**description: 用一个静态数组实现的堆栈
*/
#define STACK_TYPE
int
#define STACK_SIZE
100 //堆栈中值数量的最大值
static STACK_TYPE
stack[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;
}
**author: gooly.oh
**description: 用一个静态数组实现的堆栈
*/
#define STACK_TYPE
int
#define STACK_SIZE
100 //堆栈中值数量的最大值
static STACK_TYPE
stack[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;
}
相关文章推荐
- 经典抽象数据类型之堆栈实现(动态数组)
- 静态数组实现的堆栈
- 宏实现泛型堆栈(静态数组)
- 经典抽象数据类型之堆栈实现(单链表)
- 静态数组实现堆栈
- PHP基于数组实现的堆栈和队列功能示例
- !-- 基于静态数组的顺序表相关操作C语言实现 --!
- 实现基于静态数组的顺序表的以下基本操作:
- 数据结构与算法——在一个数组中实现两个堆栈(C语言)
- 【LeetCode-面试算法经典-Java实现】【088-Merge Sorted Array(合并排序数组)】
- 静态数组实现循环队列
- 实现基于静态数组的顺序表的以下基本操作(进阶部分)
- 数组的归并排序(经典实现:使用Ο(n)的辅助空间,递归)
- 用静态数组实现栈数据结构
- 静态数组顺序表的基本操作实现
- 采用数组和节点方式实现的堆栈
- 动态数组实现堆栈
- 实现基于静态数组的顺序表
- 巧用javascript数组实现数据结构-堆栈与队列