栈实现 C语言

最近上来写了一下栈,理解数据结构的栈。

头文件:stack.h

初始化栈结构与函数定义:

#include<stdlib.h>
#include <stdio.h>
#include<memory.h>
#define N 100struct  stack
{int data[N];int top;//标识栈顶
}; typedef struct  stack  Stack;//Stack别名void init(Stack * p);//初始化
int  isempty(Stack * p);//判定栈是否空
int isfull(Stack * p);//判定栈溢出
int  gettop(Stack * p);//获取栈顶
void push(Stack * p, int key);//插入数据
void pop(Stack * p);//吐出
void  show(Stack * p);//显示栈

stack.c

实现函数:初始化,判断栈顶,溢出等

#include "stack.h"void init(Stack * p)//初始化
{p->top = -1;//代表为空memset(p->data, 0, sizeof(int)*N);//数据清零

}
int  isempty(Stack * p)//判定栈是否空
{if (p->top==-1){return 1;//1为空
    } else{return 0;//0不为空
    }
}
int isfull(Stack * p)//判定栈溢出
{if (p->top==N-1){return 1;///溢出
    } else{return 0;//还能再喝点
    }
}
int  gettop(Stack * p)//获取栈顶
{return p->data[p->top];//获取栈顶
}
void push(Stack * p, int key)//插入数据
{if (isfull(p)==1){return;} else{p->top += 1;p->data[p->top] = key;//压入数据
    }
}
void pop(Stack * p)//吐出
{if (isempty(p)==1){return;} else{p->top -= 1;//出栈
    }
}void  show(Stack * p)
{int i;if (isempty(p) == 1){return;}else{printf("\n栈的数据是\n");for (i = 0; i <= p->top;i++){printf("%4d", p->data[i]);//打印栈的数据
        }printf("\n");}
}

主函数main.c

#include<stdio.h>
#include"stack.h"
void main()
{int i = 0;int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };Stack mystack;init(&mystack);//初始化for (i = 0; i < 10;i++){push(&mystack, i);}//全部装完再吐while (!isempty(&mystack)){printf("%d", gettop(&mystack)); //获取栈顶pop(&mystack); //吐出
    }printf("\n");//装一个吐一个。。。。。init(&mystack);//初始化for (i = 0; i < 10; i++){push(&mystack, i);printf("%d", gettop(&mystack));pop(&mystack);}getchar();
}

 

转载于:https://www.cnblogs.com/zhenghongxin/p/6734762.html

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

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

相关文章

php签名墙,肺功能检查质量控制网

2017年12月2日&#xff0c;由中华医学会呼吸病学分会/儿科分会、国家呼吸系统疾病临床医学研究中心、国家呼吸疾病医疗质量控制中心、中国肺功能联盟、中国儿童肺功能协作组主办&#xff0c;浙江省中医院承办的"2017年中国肺功能检查规范化培训及应用推广学习班暨肺功能检…

餐饮水单打印软件_开发一款餐饮手机app系统软件什么价格?有哪些方面需要考虑?...

开发一款餐饮手机app系统软件什么价格&#xff1f;有哪些方面需要考虑&#xff1f;近年来&#xff0c;餐饮类的APP如雨后春笋般快速增长&#xff0c;无论是上档次的酒店&#xff0c;还是各大餐厅&#xff0c;都有各自的专属APP。餐饮APP的开发能让大型酒店/餐厅获得更多盈利、销…

html5中如何去掉input type date默认

html5中如何去掉input type date默认样式 2.对日期时间控件的样式进行修改目前WebKit下有如下9个伪元素可以改变日期控件的UI&#xff1a;::-webkit-datetime-edit – 控制编辑区域的::-webkit-datetime-edit-fields-wrapper – 控制年月日这个区域的::-webkit-datetime-edit-…

Spring-framework应用程序启动loadtime源码分析笔记(二)——@Transactional

Transactional标识类或方法&#xff0c;使方法被执行时使用事务方式执行&#xff0c;这里只讨论PROXY方法增强方法。使用EnableTransactionManagement&#xff0c;默认modelAdviceMode.PROXY&#xff0c;通过Import(TransactionManagementConfigurationSelector.class)来判断在…

具有Spring的简单工作流引擎

几个月前&#xff0c;在处理一个公司项目时&#xff0c;我们需要开发REST服务&#xff0c;该服务用于根据客户端应用程序发送的数据发送电子邮件。 在开发此服务期间&#xff0c;我们决定创建简单的工作流引擎&#xff0c;该引擎将为发送电子邮件收费&#xff0c;但该引擎也可用…

php put 参数,php – 如何在Guzzle 5中发送PUT请求的参数?

根据the manual,The body option is used to control the body of an entity enclosingrequest (e.g., PUT, POST, PATCH).记录的put’ing方法是&#xff1a;$client new GuzzleHttp\Client();$client->put(http://httpbin.org, [headers > [X-Foo > Bar],body > …

TypeScript学习笔记归纳(持续更新ing)

文章目录 前言 二、TypeScript的优势体现在哪里&#xff1f; 1、执行时间上的区别 2、基础数据类型区别 3、TS优势 三、TypeScript的关键特性 四、TypeScript的类型系统 1、什么是类型注释&#xff1f; 2、类型系统核心 - 常用类型 1&#xff09; 基本类型&#xff0…

组态王 6.55 启停plc_永宏PLC在远程控制系统中的应用

一、行业介绍本远程控制系统是给石药集团的下属子公司设计的一个控制方案。主要是配套GPRS-DTU产品实现远程plc与plc之间的数据共享。从而达到远程无线数据写入控制和读取监控的目的。二、客户需求(1) 客户可以在监控室控制至少2-3公里外的井上两个水泵的启动和停止。(2) 客户可…

Vue表格中,对数据进行转换、处理

众所周知&#xff0c;后端从Mysql取出的数据&#xff0c;一般是很难单独处理某一个Key的数据的&#xff08;需要处理的话&#xff0c;可能会浪费大量的性能。而且对页面加载时间有很大的影响&#xff09;&#xff0c;所以&#xff0c;从数据库取出的数据。只能由前端进行处理。…

Java应用程序中的SQL注入

在本文中&#xff0c;我们将讨论什么是SQL注入攻击。 以及它如何影响任何Web应用程序使用后端数据库。 在这里&#xff0c;我专注于Java Web应用程序。 开放Web应用程序安全项目&#xff08;OWAP&#xff09;列出了SQL注入是Web应用程序的主要漏洞攻击。 黑客将Web请求中的SQL代…

【转】ReactNativeweexDeviceOne对比

React Native出来有一段时间了&#xff0c;国内的weex和deviceone是近期发布的&#xff0c;我可以说从2011年就开始关注快速开发的跨平台平台技术了&#xff0c;接触过phoneGap、数字天堂、appcan等早期的移动中间件技术&#xff0c;也跟朋友也讨论过这类的轻量级框架。这些年通…

bluetooth射频已关闭请打开bluetooth射频_希杰大功率射频放大器烧了维修诊断步骤...

如果电阻值过低&#xff0c;说明电源内部存在短路&#xff0c;正常时其阻值应能达到100千欧以上;电容器应能够充放电&#xff0c;如果损坏&#xff0c;则表现为AC电源线两端阻值低&#xff0c;呈短路状态&#xff0c;否则可能是开关管击穿。然后检查直流输出部分脱开负载&#…

java中整数如何表示,在Java中如何在位级别上内部表示整数?

慕瓜9086354Java整数为32位&#xff0c;并且总是带符号的。这意味着&#xff0c;最高有效位(MSB)用作符号位。用an表示的整数int不过是位的加权和。权重分配如下&#xff1a;Bit# Weight31 -2^3130 2^3029 2^29... ...2 2^21 2^10 …

洛谷-P1160 队列安排

题目 Problem Description 一个学校里老师要将班上N个同学排成一列&#xff0c;同学被编号为1&#xff5e;N&#xff0c;他采取如下的方法&#xff1a; 1.先将1号同学安排进队列&#xff0c;这时队列中只有他一个人&#xff1b; 2.2&#xff5e;N号同学依次入列&#xff0c;编号…

1.HTML小结

HTML 基本文档 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>文档标题</title> </head> <body> 可见文本... </body> </html> <!DOCTYPE html>html文件声明。charset"UTF-8…

方法参数名称和Spring

继续之前的博客文章有关构造函数和方法参数以及Java在运行时不保留参数名称的情况–先前的文章涉及构造函数不保留参数名称及其对Spring中的Contructor注入的含义&#xff0c;在此我将介绍更多内容不保留参数名称的情况对Spring有影响&#xff1a; 1.考虑带参数的Spring MVC C…

Fragment Or DialogFragment Can not perform this action after onSaveInstanceState

转载&#xff1a;http://blog.csdn.net/chenshufei2/article/details/48747149 public void show(FragmentManager manager, String tag) {mDismissed false;mShownByMe true;FragmentTransaction ft manager.beginTransaction();ft.add(this, tag);ft.commit(); //注意这里…

php延迟更新,ThinkPHP开发指南-模型-高级模型之延迟更新

导航&#xff1a;上一页我们经常需要给某些数据表添加一些需要经常更新的统计字段&#xff0c;例如用户的积分、文件的下载次数等等&#xff0c;而当这些数据更新的频率比较频繁的时候&#xff0c;数据库的压力也随之增大不少&#xff0c;我们可以利用高级模型的延迟更新功能缓…

three.js制作3d模型工具_3D打印模型打磨抛光常用工具

对于追求更好模型品质的人来说&#xff0c;对3D打印模型进行后处理工作是必不可少的&#xff0c;而后处理&#xff0c;首要的便是对模型进行打磨、抛光&#xff0c;将不属于模型的耗材去除&#xff0c;提高表面光洁度。在此工作中&#xff0c;我们需要用到很多工具&#xff0c;…

Linux中文档去掉windows文本的多余的回车符(^M)

1) 使用sed 去掉windows下的回车符 &#xff08;注意^M 在linux 下写法 按^M 是回车换行符,输入方法是按住CTRLv,松开v,按m)sed -i s/^M//g filename 2) 在vim下类似 :%s/^M//g &#xff08;^M输入方法和上面方法相同&#xff09; 3) 使用dos2unix dos2unix filename 个人觉得第…