经典抽象数据类型之堆栈实现(动态数组)
来源:互联网 发布:软件开发部门职位 编辑:程序博客网 时间:2024/05/29 16:40
/*
** author: gooly.oh
** description: 一个动态分配数组实现的堆栈
** 堆栈的长度在创建堆栈的函数被调用时给出,该函数必须在任何其他操作堆栈函数之前调用
*/
#define STACK_TYPEint
static STACK_TYPE*stack;
static size_t stack_size;
static int top_element = -1;
/*
** create_stack
*/
void
create_stack(size_t size)
{
assert(stack_size == 0);
stack_size = size;
stack = (STACK_TYPE *)malloc(stack_size * sizeof(STACK_SIZE));
assert( stack != NULL);
}
/*
** destory_stack
*/
void
destory_stack(void)
{
assert(stack_size > 0);
stack_size = 0;
free(stack);
stack = NULL;
}
/*-----------------------------------------------------------------------
**name: push
**function: 把一个新值压栈
**param: 被压入的值
*/
void
push(STACK_TYPE value)
{
assert(!is_full());
stack[++top_element] = value;
}
/*-----------------------------------------------------------------------
**name: pop
**function: 从堆栈中弹出一个值,并将其丢弃
*/
void
pop(void)
{
assert(!is_empty());
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)
{
assert(stack_size > 0);
return top_element == -1;
}
/*-----------------------------------------------------------------------
**name: is_full
**function: 如果堆栈已满,返回TRUE,否则返回FALSE
*/
int is_full(void)
{
assert(stack_size > 0);
return top_element = STACK_SIZE - 1;
}
** author: gooly.oh
** description: 一个动态分配数组实现的堆栈
** 堆栈的长度在创建堆栈的函数被调用时给出,该函数必须在任何其他操作堆栈函数之前调用
*/
#define STACK_TYPEint
static STACK_TYPE*stack;
static size_t stack_size;
static int top_element = -1;
/*
** create_stack
*/
void
create_stack(size_t size)
{
assert(stack_size == 0);
stack_size = size;
stack = (STACK_TYPE *)malloc(stack_size * sizeof(STACK_SIZE));
assert( stack != NULL);
}
/*
** destory_stack
*/
void
destory_stack(void)
{
assert(stack_size > 0);
stack_size = 0;
free(stack);
stack = NULL;
}
/*-----------------------------------------------------------------------
**name: push
**function: 把一个新值压栈
**param: 被压入的值
*/
void
push(STACK_TYPE value)
{
assert(!is_full());
stack[++top_element] = value;
}
/*-----------------------------------------------------------------------
**name: pop
**function: 从堆栈中弹出一个值,并将其丢弃
*/
void
pop(void)
{
assert(!is_empty());
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)
{
assert(stack_size > 0);
return top_element == -1;
}
/*-----------------------------------------------------------------------
**name: is_full
**function: 如果堆栈已满,返回TRUE,否则返回FALSE
*/
int is_full(void)
{
assert(stack_size > 0);
return top_element = STACK_SIZE - 1;
}
- 经典抽象数据类型之堆栈实现(动态数组)
- 经典抽象数据类型之堆栈实现(静态数组)
- 经典抽象数据类型之堆栈实现(单链表)
- 《大话数据结构》读书笔记之栈抽象数据类型(数组实现)
- 动态数组实现堆栈
- 动态数组实现的堆栈
- 数据结构与算法之动态数组实现堆栈
- 《大话数据结构》读书笔记之 队列抽象数据类型(数组实现循环队列)
- 堆栈(数组实现)
- 第十七章经典抽象数据结构二:树(数组实现)
- 用动态数组实现堆栈数据结构
- C语言堆栈实现( 动态数组 )
- 第十七章经典抽象数据类型(一)
- 经典抽象数据类型
- 20.经典抽象数据类型
- 经典抽象数据类型
- 数组实现堆栈(sbds)
- 考研数据结构与算法之堆栈的使用(三)数组实现的堆栈
- 关于多线程并发:每个开发人员都应了解的内容
- Qt之QNetworkDiskCache
- 在java工程所有的.java中找到内容包含指定字符串的.java文件
- 查找目录下的所有文件中是否含有某个字符串 linux
- 【IOS】1.xcode 开发的零碎整理 | ARC 关闭键盘
- 经典抽象数据类型之堆栈实现(动态数组)
- js判断变量类型 有2种方法
- linux sed 批量替换多个文件中的字符串
- 经典抽象数据类型之堆栈实现(单链表)
- Windows下python2.7+opencv环境的搭建
- 与服务器端链接的工具类
- VB API常数的值如果是负值,则外面要加一括号
- 黑马程序员_java线程进阶
- 【SqlServer2005+ 性能优化】Sql Server 数据库优化相关