判断堆栈是否满或空
/*
**
** 静态数组实现堆栈程序 a_stack.c ,数组长度由#define确定
*/
#include"stack.h"
#include<assert.h>
#include<stdio.h>
#define STACK_SIZE 100 /* 堆栈最大容纳元素数量 */
/*
** 存储堆栈中的数组和一个指向堆栈顶部元素的指针
*/
static STACK_TYPE stack[STACK_SIZE];
static int top_element = -1;
/* push */
void push(STACK_TYPE value)
{
assert(!is_full()); /* 压入堆栈之前先判断是否堆栈已满*/
top_element += 1;
stack[top_element] = value;
}
/* pop */
void pop(void)
{
assert(!is_empty()); /* 弹出堆栈之前先判断是否堆栈已空 */
top_element -= 1;
}
/* top */
STACK_TYPE top(void)
{
assert(!is_empty());
return stack[top_element];
}
/* is_empty */
int is_empty(void)
{
return top_element == -1;
}
/* is_full */
int is_full(void)
{
return top_element == STACK_SIZE - 1;
}
《c和指针》中的一个例子。
上面的程序中用 assert(!is_empty());判读堆栈是否为空,
assert(!is_full());判读堆栈是否为满,这可行吗????
!是逻辑非操作,只要assert的参数不为零,assert断言总是真的,就不会提示错误了
is_full返回值是STACK_SIZE - 1;大都会非零的值,那就表示真,!is_full()岂不是变成假了,
那断言不就总提示出错了吗??
**
** 静态数组实现堆栈程序 a_stack.c ,数组长度由#define确定
*/
#include"stack.h"
#include<assert.h>
#include<stdio.h>
#define STACK_SIZE 100 /* 堆栈最大容纳元素数量 */
/*
** 存储堆栈中的数组和一个指向堆栈顶部元素的指针
*/
static STACK_TYPE stack[STACK_SIZE];
static int top_element = -1;
/* push */
void push(STACK_TYPE value)
{
assert(!is_full()); /* 压入堆栈之前先判断是否堆栈已满*/
top_element += 1;
stack[top_element] = value;
}
/* pop */
void pop(void)
{
assert(!is_empty()); /* 弹出堆栈之前先判断是否堆栈已空 */
top_element -= 1;
}
/* top */
STACK_TYPE top(void)
{
assert(!is_empty());
return stack[top_element];
}
/* is_empty */
int is_empty(void)
{
return top_element == -1;
}
/* is_full */
int is_full(void)
{
return top_element == STACK_SIZE - 1;
}
《c和指针》中的一个例子。
上面的程序中用 assert(!is_empty());判读堆栈是否为空,
assert(!is_full());判读堆栈是否为满,这可行吗????
!是逻辑非操作,只要assert的参数不为零,assert断言总是真的,就不会提示错误了
is_full返回值是STACK_SIZE - 1;大都会非零的值,那就表示真,!is_full()岂不是变成假了,
那断言不就总提示出错了吗??
...全文
相关推荐
C语言课设之停车场管理系统.docx
判断条件:根据车场状态(满或不满)决定车辆操作,并更新相关数据结构。四.
C++堆栈类模板实现代码
在实现堆栈类模板之前,需要明确堆栈应具备的基本操作功能,包括构造堆栈、销毁堆栈、判断堆栈是否为空、判断堆栈是否已满、清空堆栈、获取堆栈长度、入栈(压栈)、出栈和遍历堆栈等。
堆栈的C++实现!!!
**查看栈顶元素(Top)**:返回堆栈顶部的元素,但不移除。4. **检查堆栈是否为空(Empty)**:判断堆栈是否为空。在C++中,我们可以利用动态数组或者STL的`vector`来实现堆栈。
堆栈实现括号匹配
判断是否为空:我们使用`IsEmpty`函数来判断堆栈是否为空。
StackEmptyException:堆栈是空的。 你告诉我接下来会发生什么
为避免`StackEmptyException`,程序员应采取以下预防措施:- **检查堆栈状态**:在尝试弹出元素之前,可以使用`isEmpty()`方法检查堆栈是否为空。


