基于数组的堆栈实现
来源:互联网 发布:七天网络查分登入账号 编辑:程序博客网 时间:2024/04/29 14:33
定义函数接口头文件“sa.h”
#ifndef _SA_H#define _SA_H#include <sys/types.h>/* 堆栈 */typedef struct Stack { int* arr; /* 数组 */ size_t cap; /* 容量 */ size_t top; /* 栈顶 */} STACK;/* 分配内存并初始化为空堆栈 */void stack_init (STACK* stack, size_t cap);/* 释放内存并恢复到初始状态 */void stack_deinit (STACK* stack);/* 判断是否满 */int stack_full (STACK* stack);/* 判断是否空 */int stack_empty (STACK* stack);/* 压入 */void stack_push (STACK* stack, int data);/* 弹出 */int stack_pop (STACK* stack);/* 栈顶 */int stack_top (STACK* stack);/* 数量 */size_t stack_size (STACK* stack);#endif /* _SA_H */
函数功能实现“sa.c”
/* 基于数组的堆栈 */#include <stdlib.h>#include "sa.h"/* 分配内存并初始化为空堆栈 */void stack_init (STACK* stack, size_t cap) { stack->arr = malloc (cap * sizeof (int)); stack->cap = cap; stack->top = 0;}/* 释放内存并恢复到初始状态 */void stack_deinit (STACK* stack) { free (stack->arr); stack->arr = NULL; stack->cap = 0; stack->top = 0;}/* 判断是否满 */int stack_full (STACK* stack) { return stack->top >= stack->cap;}/* 判断是否空 */int stack_empty (STACK* stack) { return ! stack->top;}/* 压入 */void stack_push (STACK* stack, int data) { stack->arr[stack->top++] = data;}/* 弹出 */int stack_pop (STACK* stack) { return stack->arr[--stack->top];}/* 栈顶 */int stack_top (STACK* stack) { return stack->arr[stack->top - 1];}/* 数量 */size_t stack_size (STACK* stack) { return stack->top;}
测试用例“sa_test.c”
/* 基于数组的堆栈 */#include <stdio.h>#include "sa.h"/* 测试用例 */int main (void) { STACK stack; stack_init (&stack, 10); int i = 0; while (! stack_full (&stack)) stack_push (&stack, i++); while (! stack_empty (&stack)) printf ("%d\n", stack_pop (&stack)); stack_deinit (&stack); stack_init (&stack, 5); stack_push (&stack, (int)"ABC"); stack_push (&stack, (int)"DEF"); stack_push (&stack, (int)"GHI"); stack_push (&stack, (int)"JKL"); stack_push (&stack, (int)"MNO"); while (! stack_empty (&stack)) printf ("%s\n", (char const*)stack_pop (&stack)); stack_deinit (&stack); return 0;}
0 0
- 基于数组的堆栈实现
- 基于数组或链表的堆栈实现
- 堆栈的数组实现
- 堆栈的数组实现
- 基于堆栈的虚拟机实现
- 静态数组实现的堆栈
- 动态数组实现的堆栈
- 4.2 堆栈的数组实现
- 基于堆栈的计算器实现算法
- 基于堆栈的计算器实现算法
- 基于链表的堆栈实现
- 基于顺序存储结构的堆栈实现
- 堆栈的数组实现(完整版)
- 静态数组实现堆栈
- 用数组实现堆栈
- 动态数组实现堆栈
- 数组实现堆栈
- 堆栈(数组实现)
- sql语句优化
- KMP模式匹配算法
- 编译原理之文法一
- 浅谈PVC塑料配方计算软件的设计
- 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”
- 基于数组的堆栈实现
- 编译原理之文法二
- adsaD
- 应聘成功不是本事,会筛选顶级offer才是真本事
- linux使用wine安装windows exe程序
- 什么是游戏NP?如何在NP下读写游戏内存及如何进入NP进程
- LeetCode Merge Two Sorted Lists
- 编译原理之子树与短语、句柄
- python数据结构与算法 29-2 冲突解决