数据结构(顺序栈

目录

  • 1. 讲解:
  • 2. C++代码实现:
  • 小结:

1. 讲解:

用顺序的物理结构(数组)存储栈这个数据结构,实现栈的创建、销毁、增删查、判空。

top指针的指向位置有两种实现方法:一个是指向栈顶元素;一个是指向栈后第一个元素。这里用的是指向栈顶元素的方法实现,这两种不同的实现方式只是在有的操作中需要有部分修改。

在这里插入图片描述

2. C++代码实现:

#include <iostream>

using namespace std;

#define MaxSize 10
#define ElemType int

typedef struct {
	ElemType data[MaxSize];	// 静态数组存放元素
	int top;				// 栈顶指针
}SqStack;


// 初始化栈
void InitStack(SqStack& S) {
	S.top = -1;	// 初始化栈顶指针
}

// 判断栈空
bool StackEmpty(SqStack S) {
	if (S.top == -1) return true;
	else return false;
}

// 入栈
bool Push(SqStack& S, ElemType e) {
	if (S.top == MaxSize - 1) return false;	// 如果栈满则失败

	S.data[++S.top] = e;					// 栈顶指针加一
	return true;
}

// 出栈
bool Pop(SqStack& S, ElemType& e) {
	if (S.top == -1) return false;			// 如果栈空则失败

	e = S.data[S.top--];					// 栈顶指针减一
	return true;
}

// 读栈
bool GetTop(SqStack& S, ElemType& e) {
	if (S.top == -1) return false;			// 如果栈空则失败

	e = S.data[S.top];						// 栈顶指针减一
	return true;
}

void main() {
	SqStack S;	// 声明顺序栈(分配空间)

	// 1.初始化
	InitStack(S);
	// 2.进栈
	Push(S, 1);
	// 3.读取栈顶元素
	int e;
	GetTop(S, e);
	cout << e << endl;
	// 4.出栈
	Pop(S, e);
	cout << e << endl;
}

小结:

关注我给大家分享更多有趣的知识,以下是个人公众号,提供 ||代码兼职|| ||代码问题求解||
添加我的公众号即可:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云服务器部署Springboot项目

前端项目打包 修改ip地址 在控制台输入npm run build:prod 会产生dist文件 将dist文件中的内容移动至/usr/local/nginx/html目录下 后端项目打包 修改ip地址 执行clean操作 执行install操作 将生成的target文件中的jar包移动至/usr/local/src目录下 启动 注意⚠️&#xff…

前沿论文 | LLM推理性能优化最佳实践

原文&#xff1a;安全验证 - 知乎​ 来源 题目&#xff1a;LLM Inference Performance Engineering: Best Practices 地址&#xff1a;https://www.databricks.com/blog/llm-inference-performance-engineering-best-practices 在这篇博文中&#xff0c;MosaicML工程团队分析了…

AI讲师人工智能讲师大模型培训讲师叶梓:突破大型语言模型推理效率的创新方法

大型语言模型&#xff08;LLM&#xff09;在自然语言处理&#xff08;NLP&#xff09;任务中展现出了前所未有的能力&#xff0c;但它们对计算资源的巨大需求限制了其在资源受限环境中的应用。SparQ Attention算法提出了一种创新的方法&#xff0c;通过减少注意力机制中的内存带…

HBuilder真机调试检测不到荣耀Magic UI系列(包括手机和电脑)解决办法

HBuilder真机调试检测不到荣耀Magic UI系列&#xff08;包括手机和电脑&#xff09;解决办法解决方法&#xff1a; 1.在开发人员选项中开启USB调试 如何进入开发者选项&#xff1f; 设置->关于->版本号&#xff0c;点击版本号直至出现您已处于开发者模式 2.选择USB配置…

Github 2024-04-19Java开源项目日报 Top9

根据Github Trendings的统计,今日(2024-04-19统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9HTML项目1Android开发者实用工具集 创建周期:2820 天开发语言:Java协议类型:Apache License 2.0Star数量:32909 个Fork数量:10631…

北大字节联合发布视觉自动回归建模(VAR):通过下一代预测生成可扩展的图像

北大和字节发布一个新的图像生成框架VAR。首次使GPT风格的AR模型在图像生成上超越了Diffusion transformer。 同时展现出了与大语言模型观察到的类似Scaling laws的规律。在ImageNet 256x256基准上,VAR将FID从18.65大幅提升到1.80,IS从80.4提升到356.4,推理速度提高了20倍。 相…

设计模式——策略模式20

策略模式是一种行为设计模式&#xff0c; 它能让你定义多种算法或行为方式&#xff0c; 并将具体实现放入独立的类中&#xff0c; 以使算法的对象能够相互替换。使用场景例如活动中多种打折策略。 策略抽象 /*** author ggbond* date 2024年04月18日 08:02*/ public interfa…

Linux 系统下的进程间通信 IPC 入门 「中」

以下内容为本人的学习笔记&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/39XQUQtGC3Ow-0s0JKWnog 信号量 信号量一般用于配合共享内存的数据传输&#xff0c;共享内存被多个进程之间共享访问&#xff0c;各个进程对共享…

Arcade 用户界面textarea

# 导入所需库 import arcade import arcade.gui# 创建窗口类 class MyWindow(arcade.Window):# 初始化方法def __init__(self):super().__init__(800, 600, "GUI Widgets Example", resizableTrue)# 创建UI管理器&#xff0c;用于处理UI元素self.manager arcade.gui…

2024Mathorcup数学应用挑战赛C题|图神经网络的预测模型+ARIMA时间序列预测模型+人员排班混合整数规划模型|完整代码和论文全解全析

2024Mathorcup数学应用挑战赛C题|图神经网络的预测模型ARIMA时间序列预测模型人员排班混合整数规划模型|完整代码和论文全解全析 我们已经完成了2024Mathorcup数学建模挑战赛C题的40页完整论文和代码&#xff0c;相关内容可见文末&#xff0c;部分图片如下&#xff1a; 问题分…

N元语言模型

第1关&#xff1a;预测句子概率 任务描述 本关任务&#xff1a;利用二元语言模型计算句子的概率 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.条件概率计算方式。 2.二元语言模型相关知识。 条件概率计算公式 条件概率是指事件A在事件B发生的条件下发…

Golang | Leetcode Golang题解之第36题有效的数独

题目&#xff1a; 题解&#xff1a; func isValidSudoku(board [][]byte) bool {var rows, columns [9][9]intvar subboxes [3][3][9]intfor i, row : range board {for j, c : range row {if c . {continue}index : c - 1rows[i][index]columns[j][index]subboxes[i/3][j/3]…

【每日一题】2007. 从双倍数组中还原原数组-2024.4.18

题目&#xff1a; 2007. 从双倍数组中还原原数组 一个整数数组 original 可以转变成一个 双倍 数组 changed &#xff0c;转变方式为将 original 中每个元素 值乘以 2 加入数组中&#xff0c;然后将所有元素 随机打乱 。 给你一个数组 changed &#xff0c;如果 change 是 双…

如何获得合适的助听器?

要获得一个合适的助听器&#xff0c;您可以按照以下步骤进行&#xff1a; 1. 咨询专业医生或听力专家&#xff1a;首先&#xff0c;建议您咨询专业的耳鼻喉科医生或听力专家。他们可以通过听力测试来评估您的听力损失程度和类型&#xff0c;并为您提供个性化的建议。 2. 选择信…

DevOps是什么?

DevOps是一系列实践、工具和文化理念的组合&#xff0c;旨在自动化并整合软件开发和信息技术运维团队之间的流程。以下是DevOps的几个关键点&#xff1a; 沟通与协作&#xff1a;DevOps强调开发和运维团队之间的沟通与合作&#xff0c;通过改善这两个部门间的协作关系&#xff…

Labview2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 LabVIEW是一种由美国国家仪器&#xff08;NI&#xff09;公司开发的程序开发环境&#xff0c;它显著区别于其他计算机语言&#xff0c;如C和BASIC。传统的计算机语言是基于文本的语言来产生代码&#xff0c;而LabVIEW则采用图形化…

JavaEE:File类查询一个文件的路径(举例+源码 )

一、File类概述 Java 中通过 java.io.File 类来对一个文件&#xff08;包括目录&#xff09;进行抽象的描述。File 类中的方法可以对文件路径以及文件名等信息进行查询&#xff0c;也可以对文件进行各项增删改操作&#xff0c;本文主要介绍 File 类的查询方法。 二、代码示例 …

计算机系统基础知识总结

一、计算机系统概述 计算系统可以分为硬件和软件两部分。硬件主要有中央处理器、存储器、输入和输出设备组成&#xff1b;软件由系统软件和应用软件组成。 冯诺依曼计算机体系&#xff1a;将硬件划分为&#xff1a;输入、输出、运算器、存储器、控制器五部分。 中央处理器&…

【WP】猿人学4 雪碧图、样式干扰

https://match.yuanrenxue.cn/match/4 探索 首先打开Fiddler&#xff0c;发现每个包的除了page参数一样&#xff0c;然后重放攻击可以实现&#xff0c;尝试py复现 Python可以正常拿到数据&#xff0c;这题不考请求&#xff0c;这题的难点原来在于数据的加密&#xff0c;这些数字…

什么是301重定向,什么时候应该使用?301重定向详细说明

如果您将网站从一个URL移动到另一个URL&#xff0c;您需要采取必要的步骤来确保您的访问者被发送到正确的位置。在技术领域&#xff0c;这被称为301重定向。 在这里&#xff0c;我们将讨论什么是301重定向&#xff0c;何时需要使用&#xff0c;以及如何在网站或WordPress中重定…