数据结构----顺序栈的操作

news2024/10/5 18:26:11
1.顺序栈的存储结构
typedef int SElemType;
typedef int Status;
typedef struct{
	SElemType *top,*base;//定义栈顶和栈底指针
	int stacksize;//定义栈的容量
}SqStack;
2.初始化栈
Status InitStack(SqStack &S){//初始化一个空栈
	S.base=new SElemType[MAXSIZE];//为顺序栈动态分配一个最大容量为MAXSIZE的空间
	if(S.base==NULL) return ERROR;//判断存储是否分配成功
	S.top=S.base;//将top初始化为base,置为空栈
	S.stacksize=MAXSIZE;//stacksize置为最大容量MAXSIZE
	return OK;
}
3.入栈操作
Status Push(SqStack &S,SElemType e){//入栈
	if(S.top-S.base==S.stacksize) return ERROR;//判断是否栈满
	*S.top=e;
	S.top++;
	return OK;
}
4.出栈操作
Status Pop(SqStack &S,SElemType &e){//出栈
	if(S.top==S.base) return ERROR;//判断栈是否为空
	S.top--;
	e=*S.top;
	return OK;
}
5.遍历栈中元素
Status PrintfStack(SqStack S){//遍历栈内的所有元素
	SElemType *p;
	p=S.base;
	printf("栈中的元素为:");
	while(p!=S.top){
		printf("%d ",*p);
		p++;
	}
	printf("\n");
}
6.获取栈顶元素
SElemType GetTop(SqStack S){//获取栈顶元素
	if(S.top!=S.base)//当栈不为空时
		return *(S.top-1);
}
7.获取栈的长度
int StackLength(SqStack S){//获取栈的长度
	int len=0;
	SElemType *s;
	s=S.base;//从栈底开始
	while(s!=S.top){
		len++;
        s++;
	}
	printf("栈的长度为:%d\n",len);
}
8.判断栈是否为空
Status StackEmpty(SqStack S){//判断栈是否为空
	if(S.top==S.base) return ERROR;
	else
	return OK;
}

9.主程序代码

#include<stdio.h>
#define MAXSIZE 100
#define ERROR 0
#define OK 1
typedef int SElemType;
typedef int Status;
typedef struct{
	SElemType *top,*base;//定义栈顶和栈底指针
	int stacksize;//定义栈的容量
}SqStack;
Status InitStack(SqStack &S){//初始化一个空栈
	S.base=new SElemType[MAXSIZE];//为顺序栈动态分配一个最大容量为MAXSIZE的空间
	if(S.base==NULL) return ERROR;//判断存储是否分配成功
	S.top=S.base;//将top初始化为base,置为空栈
	S.stacksize=MAXSIZE;//stacksize置为最大容量MAXSIZE
	return OK;
}
Status Push(SqStack &S,SElemType e){//入栈
	if(S.top-S.base==S.stacksize) return ERROR;//判断是否栈满
	*S.top=e;
	S.top++;
	return OK;
}
Status Pop(SqStack &S,SElemType &e){//出栈
	if(S.top==S.base) return ERROR;//判断栈是否为空
	S.top--;
	e=*S.top;
	return OK;
}
Status PrintfStack(SqStack S){//遍历栈内的所有元素
	SElemType *p;
	p=S.base;
	printf("栈中的元素为:");
	while(p!=S.top){
		printf("%d ",*p);
		p++;
	}
	printf("\n");
}
SElemType GetTop(SqStack S){//获取栈顶元素
	if(S.top!=S.base)
		return *(S.top-1);
}
int StackLength(SqStack S){//获取栈的长度
	int len=0;
	SElemType *s;
	s=S.base;
	while(s!=S.top){
		len++;
        s++;
	}
	printf("栈的长度为:%d\n",len);
}
Status StackEmpty(SqStack S){//判断栈是否为空
	if(S.top==S.base) return ERROR;
	else
	return OK;
}
int main()
{
	SqStack S;
	InitStack(S);
	int n;
	printf("请输入要入栈的元素个数:");
	scanf("%d",&n);
	printf("请输入要入栈的元素:");
	for(int i=0;i<n;i++){//将待入栈的元素依次存入栈中
		SElemType e;
		scanf("%d",&e);
		Push(S,e);
	}
	if(StackEmpty(S))
	printf("栈不为空!\n");
	else
	printf("栈为空!\n");
	int x=GetTop(S);
	printf("栈顶元素为:%d\n",x);
	StackLength(S);
	PrintfStack(S);
	printf("元素出栈:");
	for(int i=0;i<n;i++){
		SElemType e;
		Pop(S,e);
		printf("%d ",e);
	}
	printf("\n");
 if(StackEmpty(S))
	printf("栈不为空!\n");
	else
	printf("栈为空!\n");
	return 0;
}

运行结果

分享一个网络上真正的巨人------冬泳怪鸽的一句话:“闲话终日有,不听自然无。”,笑梗不笑人,怪哥真男人,干就完了,加油,奥里给!!!

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

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

相关文章

macOS文本编辑器 BBEdit 最新 for mac

BBEdit是一款功能强大的文本编辑器&#xff0c;适用于Mac操作系统。它由Bare Bones Software开发&#xff0c;旨在为开发者和写作人员提供专业级的文本编辑工具。 以下是BBEdit的一些主要特点和功能&#xff1a; 多语言支持&#xff1a;BBEdit支持多种编程语言和标记语言&…

jstack java堆栈跟踪工具

jstack java堆栈跟踪工具 1、jstack介绍 jstack&#xff08;stack trace for java&#xff09;是java虚拟机自带的一种堆栈跟踪工具。 jstack主要用于生成java虚拟机当前时刻的线程快照&#xff0c;线程快照是当前java虚拟机内每一条线程正在执行的方法 堆栈的集合&#xf…

信息安全工程师软考知识点

文章目录 知识点总结2023软考总结选择题问答题 知识点总结 军用不对外公开的信息系统安全等级至少应该>三级 数据中心的耐火等级不应低于二级 政府网站的信息安全等级原则上不应低于二级第一代交换机以集线器为代表&#xff0c;工作在OSI物理层 第二代交换机以太网交换机&a…

关于论文图表目录和交叉引用的使用小结

目录 1 题注用法 2 交叉引用 最近在写论文&#xff0c;遇到不少Word使用的问题(错误&#xff01;文档中没有指定样式的文字。) 网上其实也有很多解决方案但我当时还是折腾了几个小时才整出来图目录&#xff0c;以下是针对我目前使用的感觉简明很多的方法。 1 题注用法 1) 假…

Selenium+JQuery定位方法及应用

SeleniumJQuery定位方法及应用 1 JQuery定位说明1.1 JQuery定位方法1.2 JQuery最常用的三个操作1.3 JQuery一个示例1.3.1 用户名输入框1.3.2 密码输入框1.3.3 登陆按钮1.3.4 完整代码 2 JQuery选择器2.1 常用选择器列表2.2 思考 1、关于Selenium提供了很多元素定位方法&#xf…

解决计算中msvcp120.dll丢失问题,总结5个有效的方法

msvcp120.dll是Microsoft Visual C 2013 Redistributable中的一个动态链接库文件&#xff0c;它提供了许多重要的函数和类&#xff0c;用于支持各种应用程序的正常运行。当这个文件丢失或损坏时&#xff0c;可能会导致一些应用程序无法启动或运行错误。 msvcp120.dll的属性 文件…

ssm826基于ssm的电影评论系统+vue

ssm826基于ssm的电影评论系统vue 交流学习 ​​​​​​​ 演示 项目功能演示&#xff1a; ————————————————

【数据分享】我国雏鹰企业数据(excel格式\shp格式)

企业是经济活动的参与主体。一个城市的企业数量决定了这个城市的经济发展水平&#xff01;比如一个城市的金融企业较多&#xff0c;那这个城市的金融产业肯定比较发达&#xff1b;一个城市的制造业企业较多&#xff0c;那这个城市的制造业肯定比较发达。 本次我们为大家带来的…

MSVCP140_1.dll,是什么意思?msvcp140_1.dll丢失的解决方法分享

今天我在打开电脑一款软件时候&#xff0c;突然提示‘’msvcp140_1.dll丢失‘’我不知道怎么办&#xff0c;经过我几天的努力终于找到msvcp140_1.dll文件的解决方法&#xff0c;也成功解决这个问题&#xff0c;解决了我的困扰&#xff0c;也成功找到msvcp140_1.dll为什么会丢失…

关于企业海外Social平台营销布局,你需要了解这三件事

01 企业Social营销布局模式 Social营销走到现在&#xff0c;早已进入了标准配置期。任何企业和组织&#xff0c;进行营销宣传的时候都会在社媒社交平台上创建账号和运营。目前&#xff0c;海外Social平台营销模式基本分为四类&#xff1a; 官方社媒账号运营&#xff1a;以Hoot…

自我报错-----断言

断言 最近在阅读freertos源码时&#xff0c;经常在某些某些API函数中遇到assert&#xff08;断言&#xff09;&#xff0c;其实断言就是用来判断表达式是否成立&#xff0c;而进行自我报错&#xff0c;防止程序后续发生未知的错误&#xff0c;可以这么理解 if(条件true)//程序…

高通SDX12:ASoC 音频框架浅析

一、简介 ASoC–ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。 本文基于高通SDX12平台,对ASoC框架做一个分析。 二、整体框架 1. 硬件层面 嵌入式Linux设备的Audio subsystem可以划分为Machine(板…

高级运维学习(十六)Prometheus 监控

Prometheus概述 Prometheus是一个开源系统监控和警报工具包&#xff0c;最初由 SoundCloud构建。也是一款监控软件&#xff0c;也是一个时序数据库。Prometheus 将其指标收集并存储为时间序列数据&#xff0c;即指标信息与记录时的时间戳以及称为标签的可选键值对一起存储。主…

web 自动化测试,这8 个核心知识点,你一定得掌握

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

设计原则 | 单一职能原则

一、单一职能原则&#xff08;SRP&#xff1a;Single Responsibility Principle&#xff09; 1、原理 就一个类而言&#xff0c;应该仅有一个引起它变化的原因。如果一个类承担的职责过多&#xff0c;就等于把这些职责耦合在一起。一个职责的变化可能会削弱或者抑制这个类完成…

DMP大湾区工博会开幕在即,狂撒100万福利,邀您与2200+展商面对面

截止11月9日&#xff0c;DMP大湾区工博会2023已迎来超100万人关注。大湾区工博会将于11月27-30日在深圳国际会展中心(宝安)举办。作为工业制造行业的风向标&#xff0c;展会将带来2200多家全球参展企业、40多场主题演讲、数千项行业新品技术。 本届DMP大湾区工博会&#xff0c;…

Rocky DEM 高尔顿板 小球掉落正态分布模拟

Rocky DEM 高尔顿板 小球掉落正态分布模拟 前言一、外部三维模型的建立二、导入到Rocky中并设置1.导入外部三维模型2.打开3D视图3.添加颗粒入口界面4.添加颗粒并设置属性5.设置颗粒与墙壁的碰撞属性6.设置颗粒入口流量7.求解 三、动画序列设置并导出 前言 刚开始学习离散元软件…

测试面试越自信越好吗?

前几天面试了一位小伙子&#xff0c;我觉得比较有代表性&#xff0c;所以拿出来跟大家分享一下。 我们公司的招聘流程是首先HR主动寻找或者挑选投简历者中比较合适的人来公司应聘&#xff0c;先是笔试&#xff0c;笔试包括英文部分和专业知识部分&#xff0c;根据做题的结果再…

计算复杂性理论(一)图灵机

计算复杂性理论&#xff08;一&#xff09;图灵机 一台 k-带图灵机&#xff08;TM&#xff09;M 有 k-条带子。第一条带子称为输入带&#xff0c;用来存放输入数据&#xff0c;输入带是只读带。其余 k−1 条带子是工作带&#xff0c;既可以从工作带上读信息&#xff0c;也可以…

【数据结构—— 栈的实现(数组栈)】

数据结构—— 栈的实现 一.栈1.1栈的概念及结构 二.栈的实现2.1头文件的实现——&#xff08;Strck.h&#xff09;2.2 源文件的实现——&#xff08;Strck.c&#xff09;2.3 源文件的实现——&#xff08;test.c&#xff09; 三.栈的实际数据测试展示3.1正常的后进先出方式3.2 …