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

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置为最大容量MAXSIZEreturn 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;elsereturn 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置为最大容量MAXSIZEreturn 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;elsereturn 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");elseprintf("栈为空!\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");elseprintf("栈为空!\n");return 0;
}

运行结果

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

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

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

相关文章

腾讯云2核4G服务器CVM标准型S5实例租用5年价格表

腾讯云服务器网整理五年云服务器活动 txyfwq.com/go/txy 配置可选2核4G和4核8G&#xff0c;公网带宽可选1M、3M或5M&#xff0c;系统盘为50G高性能云硬盘&#xff0c;标准型S5实例CPU采用主频2.5GHz的Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器&#xff0c;睿频…

Transformer模型

目录 1. 概述 2. Model Architecture 2.1 自回归 2.2 编码器与解码器 2.3 Attention 2.4 Attention—mask 2.5 Multi-Head Attention 2.6 自注意力使用 2.7 point-wise feed forward network 2.8 embeddings 2.9 positional Encoding 1. 概述 之前的模型&#xf…

Shiro快速入门之三

一、前言 接Shiro快速入门之二&#xff0c;上篇侧重于介绍认证&#xff0c;这篇介绍一下Shiro的授权&#xff0c;先初始化5张表的数据。 注&#xff1a;创建三条权限记录&#xff0c;一个admin角色分配查询和添加用户权限&#xff0c;一个账户qingcai18036授予管理员角色。 二…

数据结构:串(定义,基本操作,存储结构)

目录 1.串的定义2.串的基本操作3.字符集编码4.串的存储结构1.顺序存储2.链式存储 1.串的定义 串&#xff0c;即字符串( String&#xff09;是由零个或多个字符组成的有限序列。 一般记为s ‘a1a2……an’ (n ≥0) 其中&#xff0c;S是串名&#xff0c;单引号括起来的字符序列是…

FCOS难点记录

FCOS 中有计算 特征图&#xff08;Feature map中的每个特征点到gt_box的左、上、右、下的距离&#xff09; 1、特征点到gt_box框的 左、上、右、下距离计算 x coords[:, 0] # h*w&#xff0c;2 即 第一列y coords[:, 1] l_off x[None, :, None] - gt_boxes[..., 0][:, No…

使用U盘安装ubuntu22操作教程

U盘启动 将烧录好的U盘&#xff0c;插上待安装系统的电脑 服务器在开机之后长按【ESC键】进入BIOS选项中&#xff0c;选择对应的U盘启动 如下图&#xff0c;在界面中“USB”选项就是我的U盘&#xff0c;第一启动项选择U盘启动&#xff0c;其他启动项不动&#xff0c;选择后按F…

【推荐】一款AI写作大师、问答、绘画工具-「智元兔 AI」

在当今技术飞速发展的时代&#xff0c;越来越多的领域开始应用人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;。其中&#xff0c;AI写作工具备受瞩目&#xff0c;备受推崇。在众多的选择中&#xff0c;智元兔AI是一款在笔者使用过程中非常有帮助的…

使用gitflow时如何合并hotfix

前言 在使用 git flow 流程时, 对于项目型的部署项目经常会遇到一个问题, 就是现场项目在使用历史版本时发现的一些问题需要修复, 但升级可能会有很大的风险或客户不愿意升级, 这时就要求基于历史版本进行 hotfix 修复. 基于历史发布版本的缺陷修复方式不同于最新发布版本的补…

SQL使用

--天空会的像哭过&#xff0c;离开你以后 并没有更自由 SQL进行数据的删除 一、删除delete 语法 delete [from] 表名称 where 条件数据删除&#xff0c;不能删除某一列&#xff0c;因为删除是对记录而言 2.1 删除是一条一条删除&#xff0c;每次删除都会将操作写入日志文件 删…

JPA Buddy快速创建update、find、count、delete、exists方法

JPA Buddy快速创建update、find、count、delete、exists方法&#xff0c;JPA默认提供的CrudRepository\JpaRepository提供的方法比较少&#xff0c;一般我们会手写一些方法&#xff0c;这里我们选择通过JPA Buddy快速生成&#xff0c;之前文章中讲到了JPA Buddy原本是IDEA收费插…

Word软件手动安装Zotero插件

文章目录 Word软件手动安装Zotero插件方法一方法二 参考资料 Word软件手动安装Zotero插件 方法一 关闭word在zotero中依次点击编辑—首选项—引用—文字编辑软件—重新安装加载项Microsoft word 方法二 寻找Zotero.dotm存储位置&#xff0c; 例如D:\Program Files\Zotero\ext…

kernelbase.dll故障怎么处理?Kernelbase.dll故障的解决方法

在使用Windows操作系统过程中&#xff0c;有可能出现kernelbase.dll故障的情况。本文将详细介绍几种修复kernelbase.dll文件的方法&#xff0c;并对这个重要的dll文件进行简要的介绍。 一.kernelbase.dll文件概述 Kernelbase.dll是Windows系统中的一个关键动态链接库&#xff…