静态栈抽象数据类型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来遍历 ...
随机推荐
- python中的 if __name__ == “__main__”: 有什么用
https://stackoverflow.com/questions/419163/what-does-if-name-main-do# 问题: What does if name == " ...
- Android下最小化程序到后台代码
procedure TForm1.Button4Click(Sender: TObject); var Intent: JIntent; begin Intent := TJIntent. ...
- python25 python的三目运算符
其他语言的三目运算符大类似: 条件 ? 条件为真返回值: 条件为假返回值 python不一样: 条件为真的返回值 if 条件 else 条件为假的返回值 或者 ...
- 再次拿起live writer
再次拿起live writer 第一次接触这哥们还是使用NPOI时,当时这个开源项目的发起人tonyqus让我知道了这家伙,感觉很不错,我们不需要直接用网页进行编辑内容,而且可以突破网页编辑器单调的设 ...
- POJ 1984 Navigation Nightmare 【经典带权并查集】
任意门:http://poj.org/problem?id=1984 Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K To ...
- How to Create a Basic Plugin
Sometimes you want to make a piece of functionality available throughout your code. For example, per ...
- SuperSocket 学习
http://www.cnblogs.com/Anaren/p/6382841.html https://www.assetstore.unity3d.com/en/#!/content/21721 ...
- 面向对象编程——class继承
在上面的章节中我们看到了JavaScript的对象模型是基于原型实现的.特点是简单,缺点是理解起来比传统类-实例模型要困难,最大的缺点是继承的实现需要编写大量代码,并且需要正确实现原型链. 新的关键字 ...
- LeetCode17.电话号码的字母组合 JavaScript
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" 输出:[&quo ...
- Restframework的版本及分页
1.版本 1.1基于url的get传参方式 1.创建django项目(起名我的是version),再创建一个app01应用 创建完成,通过python3 manage.py startapp api ...