四、线性栈
来源:互联网 发布:linux端口占用查看命令 编辑:程序博客网 时间:2024/06/09 23:52
- 序言
- 栈的结构图如下
- 栈的结构
- 栈的基本操作
- 实现
- 序言
序言
线性栈是使用线性结构数组直线的栈.
栈的结构图如下
栈的结构.
#define MAX_STACK_ARRAY_SIZE 15typedef struct STACK_ARRAY { ELEMENT *stack; int top; int size;} *PSTACK_ARRAY, STACK_ARRAY;
栈的基本操作
void init_stack_array(PSTACK_ARRAY *pstack_array);void push_stack_array(PSTACK_ARRAY pstack_array, ELEMENT *data);void pop_stack_array(PSTACK_ARRAY pstack_array, ELEMENT *data);bool is_empty_stack_array(PSTACK_ARRAY pstack_array);bool is_full_stack_array(PSTACK_ARRAY pstack_array);void print_stack_array(PSTACK_ARRAY pstack_array);void destroy_stack_array(PSTACK_ARRAY *pstack_array);
实现
void init_stack_array(PSTACK_ARRAY *pstack_array) { *pstack_array = malloc(sizeof(STACK_ARRAY)); if ((*pstack_array) == NULL) { exit(OVERFLOW); } (*pstack_array)->stack = malloc(sizeof(ELEMENT) * MAX_STACK_ARRAY_SIZE); (*pstack_array)->top = -1; (*pstack_array)->size = MAX_STACK_ARRAY_SIZE;};void push_stack_array(PSTACK_ARRAY pstack_array, ELEMENT *data) { if (is_full_stack_array(pstack_array)) { printf("array stack is full"); return; } pstack_array->top++; pstack_array->stack[pstack_array->top] = *data;};void pop_stack_array(PSTACK_ARRAY pstack_array, ELEMENT *data) { if (is_empty_stack_array(pstack_array)) { printf("array stack is empty"); return; } *data = pstack_array->stack[pstack_array->top]; pstack_array->top--;};bool is_empty_stack_array(PSTACK_ARRAY pstack_array) { if (pstack_array->top == -1) { return true; } return false;};bool is_full_stack_array(PSTACK_ARRAY pstack_array) { return pstack_array->top == MAX_STACK_ARRAY_SIZE;};void print_stack_array(PSTACK_ARRAY pstack_array) { while (!is_empty_stack_array(pstack_array)) { int a; pop_stack_array(pstack_array, &a); printf("%d\n", a); }};void destroy_stack_array(PSTACK_ARRAY *pstack_array) { free((*pstack_array)); free(((*pstack_array)->stack)); printf("has been destroyed stack array");}
github:https://github.com/HumorSmith/DataStructure/tree/master/stack
阅读全文
0 0
- 四、线性栈
- 线性表基础知识(四)
- 线性表(四)实现
- 线性表-链表(四)
- 四、线性表(1)
- 6.线性不可分(四)
- 理解线性回归(四)——总结线性回归
- 插值---双线性,三线性,四线性 及非线性
- 线性栈
- 线性栈
- 数据结构基础四-----《线性结构的两种常见应用之一 栈》
- 数据结构之线性结构(双链表)【四】
- 排序之四(线性时间排序)
- 模式识别(四):Fisher 线性分析
- 浅析数据结构之线性表<四>
- 数据挖掘算法(四)--线性回归
- 分类和回归(四)-线性回归
- (四)线性表的顺序实现及相关操作
- Android中的自定义注解(反射实现-运行时注解)
- 网站压力测试介绍
- webview控件的使用
- jQuery的DOM操作与练习
- 【第五篇】SAP HANA XS的JavaScript API详解
- 四、线性栈
- [leeetcode]543. Diameter of Binary Tree
- Story 24-26
- 似然函数与概率密度函数的区别
- stm32f4**开发相关记录
- Django04-URL
- graphviz笔记
- R语言(递归分割树[传统决策树])分类模型(一)
- MacPro下搭建Java开发环境