您的位置:首页 > 其它

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

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: