静态栈抽象数据类型stack实现
#include<stdio.h>
#include<stdbool.h>
#include<stdlib.h>
#define MAX_STACK_SIZE 10 //堆栈的最大大小
typedef struct
{
int key;
//其他内容
}Element;
//模板类型
void push( Element item, Element *stack, short *top);
//向堆栈压入,入栈.成功返回1失败返回0
Element pop( Element *stack, short *top);
//堆栈的弹出,出栈.成功返回被弹出的数据.失败报错
bool IsEmpty( short top);
//检查堆栈是否为空,空返回1,不空返回0
bool IsFull( short top);
//检查堆栈是否满了,满返回1,未满返回0
void stackEmpty(void);
//报告堆栈未空
void stackFull(void);
//报告堆栈已满
int main(void)
{
Element A;
A.key=1;
Element stack[MAX_STACK_SIZE];
short top=-1;
//指向栈顶元素,-1表示空栈
for(int i=0; i<MAX_STACK_SIZE; i++)
{
push(A, stack, &top);
A.key+=1;
//将A压入stack
printf("%d ",stack[top].key);
}
putchar('\n');
for(int i=0; i<MAX_STACK_SIZE; i++)
{
printf("%d ",pop(stack, &top).key);
//stack出栈从栈顶开始
}
putchar('\n');
return 0;
}
void push( Element item, Element *stack, short *top)
{
//将item压入stack堆栈
if(IsFull(*top))
stackFull();
stack[++(*top)] = item;
}
Element pop( Element *stack, short *top)
{
if(IsEmpty(*top))
stackEmpty();
return stack[(*top)--];
}
bool IsEmpty( short top)
{
if(top == -1)
return true;
else
return false;
}
bool IsFull( short top)
{
if(top == MAX_STACK_SIZE-1)
return true;
else
return false;
}
void stackEmpty(void)
{
printf("Stack is Empty, cannot pop element\n");
exit(EXIT_FAILURE);
}
void stackFull(void)
{
printf("Stack is Full, cannot add element\n");
exit(EXIT_FAILURE);
}
静态栈抽象数据类型stack实现的更多相关文章
- 抽象数据类型(ADT)
概念 抽象数据类型(ADT),脱离具体实现定义数据结构,它的定义着重于做什么,而忽略怎么做 举例 列表.栈.队列 列表 列表,也叫线性表 抽象定义:数据项线性排列,可以插入某一项,删除某一项,读取某一 ...
- Java-JVM 栈帧(Stack Frame)
一.概述 栈帧位置 JVM 执行 Java 程序时需要装载各种数据到内存中,不同的数据存放在不同的内存区中(逻辑上),这些数据内存区称作运行时数据区(Run-Time Data Areas). 其中 ...
- 静态栈-------C语言
/***************************************************** Author:Simon_Kly Version:0.1 Date: 20170520 D ...
- 编程题目 定义栈的数据类型,请在类型中实现一个能够得到栈最小元素的minx函数。
首先自己用 节点 实现了 栈 这种数据类型 为了实现题目了要求,我使用的两个栈. 一个栈 用来 push pop 用户的数据, 另外一个栈用来存放 最小元素(涉及元素比较) 代码如下: #!/usr/ ...
- 抽象数据类型ADT
ADT(Abstract Data Type) 类型由什么组成? 一个类型(type)指定两类信息,一个属性集和一个操作集. 假设要定义一个新的数据类型.首先,要提供存储数据的方式,可能是通过设计一个 ...
- C语言泛型编程--抽象数据类型
一.数据类型: 在任何编程语言中,数据类型作为一个整体,ANSI-C包含的类型为:int.double.char……,程序员很少满意语言本身提供的数据类型,一个简单的办法就是构造类似:array.st ...
- ORACLE抽象数据类型
ORACLE抽象数据类型 *抽象数据类型*/1,抽象数据类型 概念包含一个或多个子类型的数据类型不局限于ORACLE的标准数据类型可以用于其他数据类型中 2,创建抽象数据类型 的语法(必须用NOT F ...
- ADT(abstract data types)抽象数据类型
1.What is it? An abstract data type is a set of objects together with a set of operations. 抽象数据类型是带有 ...
- 数据结构 集合_集合(数学)抽象数据类型的C语言实现
链表是实现集合的一种理想的方式.将List以typedef的方式重命名为Set.这样做能保留链表简洁的特性,还能使集合具有了一些多态的特性. 使用这种方法的最大好处就是可以使用list_next来遍历 ...
随机推荐
- 虚拟机配置静态 IP 以后无法连接的解决办法
问题描述 将虚拟机内部 IP 地址从动态获取改成静态 IP 以后,远程连接失败. 问题分析 Azure 虚拟机的内部 IP 默认为动态分配, 由 DHCP 服务自动分配, 在虚拟机的生命周期内, 该 ...
- python3的学习经验
网上资料非常多,颇有些“乱花渐欲迷人眼”的意味,个人看了不少,拖之前从事前端的福,发现廖雪峰大神的网站里有.学了2天之后发觉获益良多,网址:https://www.liaoxuefeng.com/wi ...
- Vue2自定义指令改变DOM值后未刷新data中绑定属性的值
标签(空格分隔): Vue 自定义指令用于过滤输入框,只允许输入数字: Vue.directive('numberOnly', { bind: function (el, binding) { el. ...
- 通过bat设置系统环境变量
在软件运行过程中,可能需要配置计算机的环境变量,在这里分为两种情况: 一:增加或修改环境变量只在当前软件环境中使用 如我们设置Java的环境变量: set CLASSPATH=%CLASSPATH%; ...
- SVN:验证位置时发生错误解决方案
1. 2. 3.preferencens > svn >svn接口-选择SVNKit(Pure Java)设置后,再引用svn路径后,直接弹出输入用户名和密码就对了. 4.
- [19/03/12-星期二] 数组_遍历(for-each)&复制&java.util.Arrays类
一.遍历 for-each即增强for循环,是JDK1.5新增加的功能,专门用于读取数组或集合中所有的元素,即对数组进行遍历. //数组遍历 for-each public class Test_03 ...
- 2018.10.10 MAC 的Launchpad图标改变大小的设置
mac更改launchpad图标大小 设置每列显示的图标数目为8 defaults write com.apple.dock springboard-columns -int 8 设置每行显示的图标数 ...
- eclipse集成tomcat 部署项目设置
============================================================= 1. 下载安装tomcat插件 ====================== ...
- java随机数Reandom(简单介绍)
简单介绍 Java中存在着两种Random函数 一.java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0, ...
- SQL模糊查询,sum,AVG,MAX,min函数
cmd mysql -hlocalhost -uroot -p select * from emp where ename like '___' -- 三个横线, - 代表字符,可以查询 三个enam ...