用链表实现一个栈

#include<stdio.h>
#include<stdlib.h>
typedef int ElementType; /*栈元素类型*/
#define SUCCESS 0
#define FAILURE -1
/*定义栈结构*/
typedef struct StackInfo
{ElementType value; /*栈存储的数据*/struct StackInfo *next; /*指向栈的下一个元素*/
}StackInfo_st;
/*函数声明*/
StackInfo_st *createStack(void);
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_empty(StackInfo_st *s);
/*创建栈,外部释放内存*/
StackInfo_st *createStack(void)
{StackInfo_st *stack = (StackInfo_st *)malloc(sizeof(StackInfo_st));if(NULL == stack){printf("malloc failed\n");return NULL;} stack->next = NULL;return stack;
}
/*入栈,0表示成,非0表示出错*/
int stack_push(StackInfo_st *s,ElementType value)
{StackInfo_st *temp = (StackInfo_st *)malloc(sizeof(StackInfo_st));if(NULL == temp){printf("malloc failed\n");return FAILURE;}/*将新的节点添加s->next前,使得s->next永远指向栈顶*/temp->value = value;temp->next = s->next;/*这一句是指向栈头部,实际上不用也没有问题*/s->next = temp;return SUCCESS;
}
/*出栈*/
int stack_pop(StackInfo_st *s,ElementType *value)
{/*首先判断栈是否为空*/if(stack_is_empty(s))return FAILURE;/*找出栈顶元素*/*value = s->next->value;/*保存等下需要free的指针*/StackInfo_st *temp = s->next;/*更换栈顶的位置*/s->next = s->next->next;/*释放栈顶节点内存*/if(temp!=NULL)/*先判断指针是否为空*/free(temp);temp = NULL;return SUCCESS;
}
/*访问栈顶元素*/
int stack_top(StackInfo_st *s,ElementType *value)
{/*首先判断栈是否为空*/if(stack_is_empty(s))return FAILURE;*value = s->next->value;return SUCCESS;
}
/*判断栈是否为空,空返回1,未空返回0*/
int stack_is_empty(StackInfo_st *s)
{/*栈顶指针为空,则栈为空*/return s->next == NULL;
}
int main(void)
{/*创建栈*/StackInfo_st *stack = createStack();/*如果栈为空,则压入元素1*/if(stack_is_empty(stack)){int i = 0;for(i = 0 ;i< 23;i++){ printf("push value %d\n",i);stack_push(stack,i);} }/*访问栈顶元素*/int topVal;stack_top(stack, &topVal);printf("top value %d\n",topVal);/*出栈*/int tm = 0;for(tm = 0;tm<25;tm++){int popVal;stack_pop(stack, &popVal);printf("pop value %d %d\n",tm,popVal);}int i = 0;while(SUCCESS == stack_push(stack,i) && i < 5){i++;}printf("top if stack value is %d\n",stack->next->value);/*最后记得将栈内存都释放,可自己尝试实现*/return 0;
}

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

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

相关文章

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…

python turtle 怎么设计背景颜色_Python, turtle海龟作图,如何添加背景图片?

展开全部 turtle.bgpic(rres/bg.png) #这样设置62616964757a686964616fe58685e5aeb931333431346334。def bgpic(self, picnameNone): """Set background image or return name of current backgroundimage. Optional argument: picname -- a string, name of a …

五分钟搞懂什么是红黑树(全程图解)

红黑树&#xff0c;对很多童鞋来说&#xff0c;是既熟悉又陌生。熟悉是因为在校学习期间&#xff0c;准备面试时&#xff0c;这是重点。然后经过多年的荒废&#xff0c;如今已经忘记的差不多了。如果正在看文章的你&#xff0c;马上快要毕业&#xff0c;面临着找工作的压力&…

SequenceFile文件

SequenceFile文件是Hadoop用来存储二进制形式的key-value对而设计的一种平面文件(Flat File)。目前&#xff0c;也有不少人在该文件的基础之上提出了一些HDFS中小文件存储的解决方案&#xff0c;他们的基本思路就是将小文件进行合并成一个大文件&#xff0c;同时对这些小文件的…