用数组实现一个栈

#include<stdio.h>
#define STACK_SIZE 64 /*栈大小*/
#define TOP_OF_STACK -1 /*栈顶位置*/
typedef int ElementType; /*栈元素类型*/
#define SUCCESS 0
#define FAILURE -1
/*定义栈结构*/
typedef struct StackInfo
{int topOfStack; /*记录栈顶位置*/ElementType stack[STACK_SIZE]; /*栈数组,也可以使用动态数组实现*/
}StackInfo_st;
/*函数声明*/
int stack_push(StackInfo_st *s,ElementType value);
int stack_pop(StackInfo_st *s,ElementType *value);
int stack_top(StackInfo_st *s,ElementType *value);
int stack_is_full(StackInfo_st *s);
int stack_is_empty(StackInfo_st *s);
/*入栈,0表示成,非0表示出错*/
int stack_push(StackInfo_st *s,ElementType value)
{if(stack_is_full(s))return FAILURE;/*先增加topOfStack,再赋值*/s->topOfStack++;s->stack[s->topOfStack] = value;return SUCCESS;
}
/*出栈*/
int stack_pop(StackInfo_st *s,ElementType *value)
{/*首先判断栈是否为空*/if(stack_is_empty(s))return FAILURE;*value = s->stack[s->topOfStack];s->topOfStack--;return SUCCESS;
}
/*访问栈顶元素*/
int stack_top(StackInfo_st *s,ElementType *value)
{/*首先判断栈是否为空*/if(stack_is_empty(s))return FAILURE;*value = s->stack[s->topOfStack];return SUCCESS;
}
/*判断栈是否已满,满返回1,未满返回0*/
int stack_is_full(StackInfo_st *s)
{return s->topOfStack == STACK_SIZE - 1;
}
/*判断栈是否为空,空返回1,非空返回0*/
int stack_is_empty(StackInfo_st *s)
{return s->topOfStack ==  - 1;
}int main(void)
{/*创建栈*/StackInfo_st stack;stack.topOfStack = TOP_OF_STACK;/*如果栈为空,则压入元素1*/if(stack_is_empty(&stack)){printf("push value 1\n");stack_push(&stack,1);}/*访问栈顶元素*/int topVal;stack_top(&stack, &topVal);printf("top value %d\n",topVal);/*出栈*/int popVal;stack_pop(&stack, &popVal);printf("pop value %d\n",popVal);int i = 0;while(SUCCESS == stack_push(&stack,i)){i++;}printf("stack is full,topOfStack is %d\n",stack.topOfStack);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java基础----Java中枚举的使用(一)

这里介绍一下java中关于枚举的使用。 java中枚举的使用 一、枚举中可以定义方法 参照于TimeUnit的使用&#xff0c;TimeUnit.MILLISECONDS.sleep(1000); LoveUtils的类&#xff1a;package com.linux.huhx.enumTest;/*** Created by huhx on 2017-05-24.*/ public enum LoveUti…

java jpa jar_JPA 开发所需的Jar包 (基于Hibernate)

JPA 开发所需的Jar包 (基于Hibernate)(一)下载Sun 的JPA规范(即&#xff1a;Jar包)登陆JavaEE 的 Technologies 页面:http://java.sun.com/javaee/technologies/index.jsp选择 Java Persistence 2.0选择 Final Release 中的 Download Page 后进入下面的界面&#xff1a;下载如下…

用链表实现一个栈

#include<stdio.h> #include<stdlib.h> typedef int ElementType; /*栈元素类型*/ #define SUCCESS 0 #define FAILURE -1 /*定义栈结构*/ typedef struct StackInfo {ElementType value; /*栈存储的数据*/struct StackInfo *next; /*指向栈的下一个元素*/ }StackI…

qlsql

1.导入sql文件&#xff1a;qlsql中打开命令窗口&#xff0c;输入 文件路径 &#xff0c;直接点击执行就能导入&#xff1b; 2.创建角色分配权限依次&#xff1a;connect&#xff0c;resource&#xff0c;dba&#xff0c;dba是管理层&#xff1b; 3.导出命令&#xff1a;exp 用…

dedecms怎么改php版本_PHP程序员进阶之路

PHP开发工程师处在初级、中级和高级阶段需要掌握的技能也不同&#xff0c;本文分享PHP工程师处在不同阶段下需要掌握的技能。PHP初级开发工程师PHP初级开发工程师需要掌握的技能1. 走进PHP的世界PHP介绍、PHP版本发展历史、PHP薪资水平和职业发展、WEB开发中基础概念介绍、PHP开…

C语言入坑指南-数组之谜

前言在C语言中&#xff0c;数组和指针似乎总是“暧昧不清”&#xff0c;有时候很容易把它们混淆。本文就来理一理数组和指针之间到底有哪些异同。数组回顾在分析之前&#xff0c;我们不妨回顾一下数组的知识。数组是可以存储一个固定大小的相同类型元素的顺序集合。为了便于我们…

mysql服务器查绑定的域名查_MySQL使用show status查看MySQL服务器状态信息

MySQL使用show status查看MySQL服务器状态信息这篇文章主要介绍了MySQL使用show status查看MySQL服务器状态信息,需要的朋友可以参考下在LAMP架构的网站开发过程中&#xff0c;有些时候我们需要了解MySQL的服务器状态信息&#xff0c;譬如当前MySQL启动后的运行时间&#xff0c…

Fiddler抓包使用教程-安装配置

转载请标明出处&#xff1a;http://blog.csdn.net/zhaoyanjun6/article/details/72876628 本文出自【赵彦军的博客】 Fiddler是什么&#xff1f; Fiddler是一个http调试代理&#xff0c;它能 够记录所有的你电脑和互联网之间的http通讯&#xff0c;Fiddler 可以也可以让你检查所…

VS2019调试查看变量_你很可能需要知道这个调试小技巧

缘起 最近在调试的时候&#xff0c;需要观察第三方容器中每一个元素的值。默认情况下&#xff0c;vs 并不知道如何显示第三方容器的内容&#xff0c;只能手动观察容器中的每一个值&#xff0c;超级不方便。我找到一个非常给力的好办法&#xff0c;你还知道其它好办法吗&#xf…

Linux i2c子系统驱动probe

I2C 子系统I2C 子系统使用的概率非常大&#xff0c;我之前有做过手机的经验&#xff0c; 手机跑的安卓系统&#xff0c;内核是Linux&#xff0c;手机的很多器件都是用I2C通信的&#xff0c;我经历过从板级设备到dts设备树的阶段&#xff0c;知道I2C在整个系统的举足轻重&#x…

java生成flash_web-flash发布了代码生成插件

web-flash 是一个基于 Spring BootVue.js 的后台管理系统。现在发布了其基于 Intellij IDEA 的代码生成插件!你可以再 idea 插件仓库中搜索 webflash-generator (目前插件在发布审核中&#xff0c;可能会搜索不到)&#xff0c;或者直接从本地安装插件&#xff1a;flash-generat…

JAVA多线程程序ProgressBar

JAVA多线程程序ProgressBar 题目简介&#xff1a; 思维导图&#xff1a; 实验代码&#xff1a;建议先看CalThread类&#xff0c;计算线程的实现&#xff0c;再作基本CalFrame类的界面&#xff0c; 然后作ReadThread类&#xff0c;结合CalFrame的组件&#xff0c;最后完善CalFra…

ad如何选中当前层上的器件_82条AD转换设计经验总结!

看到一片关于AD转换设计中的基本问题整理博文&#xff0c;特地转载过来和大家共分享。了解数据转换器错误及参数1、如何选择高速模数转换之前的信号调理器件;如何解决多路模数转换的同步问题?ADC之前的信号调理&#xff0c;最根本的原则就是信号调理引起的噪声和误差要在ADC的…

为什么Linux内核里大量使用goto,而很多书籍却不提倡使用?

关于C语言的goto语句存在很多争议&#xff0c;很多书籍都建议“谨慎使用&#xff0c;或者根本不用”。Linux之父Linus在Linux中大量使用goto&#xff0c;也是在启示着我们可以合理使用goto语句。存在即合理&#xff0c;既然是C语言中的一个知识点&#xff0c;我们还是有必要学会…

python特征匹配 查找_特征匹配+单纯形查找对象

我尝试使用opencv获取一个查询图像并在一个基本图像中进行匹配。我看了一下在线教程&#xff0c;你看&#xff0c;他们有示例代码来做这件事。所以我复制并粘贴了代码&#xff0c;并尝试用一些试用图像来运行它。下面是代码和一组图像示例。在import numpy as npimport cv2from…

ActionBarActivity设置全屏无标题

新建的Activity继承自ActionBarActivity&#xff0c;设置全屏无标题本来非常easy的事&#xff0c;可是没想到app居然无缘无故的挂&#xff0c;要么就是白屏一片&#xff0c;要么就是黑屏。坑了我一个多小时。&#xff01;&#xff01;原因是ActionBarActivity设置theme的时候仅…

python数据类型有哪些、分别有什么用途_python中的数据类型有哪些

python中的数据类型有9种&#xff0c;分别是1、字符串2、布尔类型3、整数4、浮点数5、数字6、列表7、元组8、字典9、日期。1、字符串 1.1、如何在Python中使用字符串 a、使用单引号() 用单引号括起来表示字符串&#xff0c;例如&#xff1a;strthis is string; print str; b、使…

用单链表实现一个队列

直接写代码吧 直接一些 #include<stdio.h> #include<stdlib.h> typedef int ElementType; /*队列元素类型*/ #define SUCCESS 0 #define FAILURE -1 /*定义队列结构*/ typedef struct StackInfo {ElementType value; /*队列存储的数据*/struct StackInfo *next; /…

Unity 之 如何删除Unity项目里面没用的东西??

选中需要用到的Scene&#xff0c;右键选 Select Dependencies&#xff0c;这样会选出这个场景所有用到的文件&#xff0c;将这些文件导出为 .unitypackage。 用同样的办法就所有用到的几个场景的文件分别导出包。在项目中删除除场景文件之外的所有其它文件&#xff0c;再将原先…

java access jdbc_Java连接Access数据库

JDBC(Java DataBase Connectivity)是Java数据库连接API。JDBC能完成与一个数据库建立连接&#xff0c;然后向数据库发送SQL语句&#xff0c;再处理数据库返回的结果。JDBC在设计上和ODBC相似。JDBC和数据库建立连接的一种方式是首先建立起一个JDBC-ODBC桥接器。首先安装office2…