#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实现的更多相关文章

  1. 抽象数据类型(ADT)

    概念 抽象数据类型(ADT),脱离具体实现定义数据结构,它的定义着重于做什么,而忽略怎么做 举例 列表.栈.队列 列表 列表,也叫线性表 抽象定义:数据项线性排列,可以插入某一项,删除某一项,读取某一 ...

  2. Java-JVM 栈帧(Stack Frame)

    一.概述 栈帧位置 JVM 执行 Java 程序时需要装载各种数据到内存中,不同的数据存放在不同的内存区中(逻辑上),这些数据内存区称作运行时数据区(Run-Time Data Areas). 其中 ...

  3. 静态栈-------C语言

    /***************************************************** Author:Simon_Kly Version:0.1 Date: 20170520 D ...

  4. 编程题目 定义栈的数据类型,请在类型中实现一个能够得到栈最小元素的minx函数。

    首先自己用 节点 实现了 栈 这种数据类型 为了实现题目了要求,我使用的两个栈. 一个栈 用来 push pop 用户的数据, 另外一个栈用来存放 最小元素(涉及元素比较) 代码如下: #!/usr/ ...

  5. 抽象数据类型ADT

    ADT(Abstract Data Type) 类型由什么组成? 一个类型(type)指定两类信息,一个属性集和一个操作集. 假设要定义一个新的数据类型.首先,要提供存储数据的方式,可能是通过设计一个 ...

  6. C语言泛型编程--抽象数据类型

    一.数据类型: 在任何编程语言中,数据类型作为一个整体,ANSI-C包含的类型为:int.double.char……,程序员很少满意语言本身提供的数据类型,一个简单的办法就是构造类似:array.st ...

  7. ORACLE抽象数据类型

    ORACLE抽象数据类型 *抽象数据类型*/1,抽象数据类型 概念包含一个或多个子类型的数据类型不局限于ORACLE的标准数据类型可以用于其他数据类型中 2,创建抽象数据类型 的语法(必须用NOT F ...

  8. ADT(abstract data types)抽象数据类型

    1.What is it? An abstract data type is a set of objects together with a set of operations. 抽象数据类型是带有 ...

  9. 数据结构 集合_集合(数学)抽象数据类型的C语言实现

    链表是实现集合的一种理想的方式.将List以typedef的方式重命名为Set.这样做能保留链表简洁的特性,还能使集合具有了一些多态的特性. 使用这种方法的最大好处就是可以使用list_next来遍历 ...

随机推荐

  1. 并发包java.util.concurrent.CountDownLatch

    /** * * @描述: 倒计时器 . * 犹如倒计时计数器,调用CountDownLatch对象的countDown方法就将计数器减1,当计算器为0的时候 * 则所有等待者或单个等待者开始执行 * ...

  2. day005-异常

    1.        异常概念 1.1   异常的继承体系 异常的根类:java.lang.Throwable,其下有两个子类: Java.lang.Error Java.util.Exception  ...

  3. cJSON库源码分析

    本文采用以下协议进行授权: 自由转载-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. cJSON是一个超轻巧,携带方便,单文件,简单的可以作为A ...

  4. 最简单的dockerfile使用教程 - 创建一个支持SSL的Nginx镜像

    什么是dockerfile?简单的说就是一个文本格式的脚本文件,其内包含了一条条的指令(Instruction),每一条指令负责描述镜像的当前层(Layer)如何构建. 下面通过一个具体的例子来学习d ...

  5. 简单的PHP算法题

    简单的PHP算法题 目录 1.只根据n值打印n个0 2.根据n值打印一行 0101010101010101010101…… 3.根据n值实现1 00 111 0000 11111…… 4.根据n值实现 ...

  6. 2017.9.5 Java知识点总结

    1.*程序的数据操作往往都在内存中操作的,也就是说数据运算都在内存中完成. 2.*什么是变量? --变量就是内存中的一块用来存放数据的存储单元. --变量中的值可变 --我们通过变量名就可以找到内存中 ...

  7. javascript运算符——条件、逗号、赋值、()和void运算符 (转载)

    原文出自 作者:小火柴的蓝色理想   javascript中运算符总共有46个,除了前面已经介绍过的算术运算符.关系运算符.位运算符.逻辑运算符之外,还有很多运算符.本文将介绍条件运算符.逗号运算符. ...

  8. ThreadLocal 例子

    /** * 一个ThreadLocal代表一个变量,故其中里只能放一个数据,有两个变量都要线程内共享,则要定义两个ThreadLocal. */ public class ThreadLocalTes ...

  9. Intellij IDEA 报错java.lang.NoClassDefFoundError

    Intellij IDEA 报错java.lang.NoClassDefFoundError 11-Aug-2018 23:48:24.686 严重 [http-nio-8080-exec-5] or ...

  10. android 学习笔记 杂记1

    getIntent().getExtras().get("intent"); 这个intent是数据包装的参数. 比如: Intent intent = new Intent(th ...