数据结构--栈

一、顺序栈

#include<iostream>using namespace std;//使用std命名空间,省略后续代码中得到std::前缀#define OK 1//定义一个宏,使用OK表示操作成功
#define ERROR 0//定义一个宏。使用ERROR表示操作失败
#define OVERFLOW -2//定义宏,表示溢出操作
#define MAXSIZE 100//定义宏,表示线性表可能得最大空间typedef int Status;//重命名为status用于表示函数的返回状态
typedef int ElemType;//重命名为ElemType用于表示线性表数据元素类型typedef struct{ElemType data[MAXSIZE];int top;
}SqStack;/*** @brief 初始化 * * @param s * * @return **/
Status init(SqStack *s){s->top=0;return OK;
}/*** @brief 入栈 * * @param s * @param e * * @return **/
Status push(SqStack *s,ElemType e){if(s->top==MAXSIZE) return ERROR;s->data[s->top]=e;s->top++;return OK;
}/*** @brief 出栈 * * @param s * @param e * * @return **/
Status pop(SqStack *s,ElemType *e){if(s->top==0){//TODOreturn ERROR;}s->top--;*e=s->data[s->top];return OK;
}/*** @brief 取栈顶元素 * * @param s * * @return **/
ElemType GetElem(SqStack s){return s.data[s.top-1];
}

二、链栈

#include<iostream>
#include<stdio.h>
using namespace std;//使用std命名空间,省略后续代码中得到std::前缀#define OK 1//定义一个宏,使用OK表示操作成功
#define ERROR 0//定义一个宏。使用ERROR表示操作失败
#define OVERFLOW -2//定义宏,表示溢出操作typedef int Status;//重命名为status用于表示函数的返回状态
typedef int ElemType;//重命名为ElemType用于表示线性表数据元素类型typedef struct StackNode{ElemType data;struct StackNode *next;
}StackNode,*LinkStack;/*** @brief 初始化 * * @param linkstack * * @return **/
Status init(LinkStack &linkstack){linkstack = new StackNode;linkstack->next=NULL;return OK;
}/*** @brief 入栈 * * @param l * @param e * * @return **/
Status push(LinkStack &l,ElemType e){StackNode *p=new StackNode;p->data=e;p->next=l;l=p;return OK;
}/*** @brief 出栈 * * @param l * @param e * * @return **/
Status pop(LinkStack &l,ElemType &e){if(l->next==NULL){//TODOreturn ERROR;}e=l->data;StackNode *p;p=l;l=p->next;delete p;return OK;
}/*** @brief 取栈顶 * * @param l * * @return **/
ElemType GetElem(LinkStack l){if(l->next!=NULL){//TODOreturn l->data;}return ERROR;
}

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

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

相关文章

STM32H743XX/STM32H563XX芯片烧录一次后,再次上电无法烧录

近期在使用STM32H563ZIT6这款芯片在开发板上使用正常&#xff0c;烧录到自己打的板子就遇到了芯片烧录一次后&#xff0c;再次上电无法烧录的问题。 遇到问题需要从以下5点进行分析。 首先看下开发板的原理图 1.BOOT0需要拉高。 2.NRST脚在开发板上是悬空的。这里我建议大家…

html页面如果是rst文件编译产生的,应该如何嵌入js代码

如果您的 HTML 页面是从 ReStructuredText (RST) 文件编译生成的&#xff0c;您可以在 RST 文件中使用适当的标记和指令来嵌入 JavaScript 代码&#xff0c;以实现在页面上显示消息或执行其他交互式操作。以下是一些基本的步骤&#xff1a; 在 RST 文件中嵌入 JavaScript&#…

基于AI智能分析网关的智慧视频监控系统一站式解决方案

1、功能概述 TSINGEE智能分析网关EasyCVR智慧视频监控系统基于云-边-端一体化协同架构&#xff0c;可兼容多协议、多类型的设备接入&#xff0c;实现视频数据采集、海量视频汇聚与处理、按需调阅、全网分发、 告警消息推送、数据级联共享、AI智能分析接入等视频能力服务&#…

合并两个有序链表OJ

合并两个有序链表OJ 文章目录 合并两个有序链表OJ一、题目及要求二、思路分析三、代码实现 一、题目及要求 二、思路分析 其次&#xff0c;题目里说了新链表是通过拼接原来的结点形成的&#xff0c;所以说我们不需要开辟新的空间。 三、代码实现 if (list1 NULL) {return li…

Zotero详细功能补充!熟练使用!【进阶版,持续更新】

Zotero安装请参见文章Zotero安装 1.改变条目文件夹 如果直接选择条目直接进行移动&#xff0c;能移动成功&#xff0c;但是原来文件夹和目标文件夹都会存在&#xff0c;实际是复制&#xff01; 如果只想保留在一个文件夹里面&#xff0c;可以选中条目&#xff0c;右击-从分…

ARMday03(寄存器读写、栈、程序状态寄存器、软中断和异常、混合编程)

单寄存器内存读写指令 将一个寄存器中的数值写入到内存&#xff0c;或者从内存中读取数据放在某一个指定寄存器中 指令码和功能 1.向内存中写&#xff1a; str{条件码} 目标寄存器,[目标地址]&#xff1a;将目标寄存器的4字节数值写入到目标地址为首地址的空间中 strh{条件码…

最新AI系统ChatGPT源码+AI绘画系统源码+支持GPT4.0+Midjourney绘画+搭建部署教程+附源码

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

CSRF(跨站请求伪造)攻击演示

目录 CSRF(跨站请求伪造)攻击演示CSRF 是什么CSRF 演示项目代码CSRF 演示过程服务启动演示 CSRF(跨站请求伪造)攻击演示 CSRF 是什么 CSRF&#xff08;Cross-Site Request Forgery&#xff09;跨站请求伪造&#xff0c;是一种网络安全攻击&#xff0c;其目标是利用被攻击者在…

Ubuntu安装.Net SDK

参考微软文档&#xff1a;在 Linux 上安装 .NET选择自己对应系统版本的链接辅助即可。 我这里使用的是 Ubuntu 20.04&#xff0c;因为在这个版本.Net 在Ubuntu包源存储库中不可用&#xff0c;需要手动添加Microsoft包存储库。 使用 APT 进行安装可通过几个命令来完成。 安装 …

软件安全测试怎么做?如何确保软件授权安全

在数字化不断演进的今天&#xff0c;软件安全测试变得至关重要。它验证了软件是否容易受到网络攻击&#xff0c;并检验恶意或意外输入对操作的影响。安全测试的目标是保障系统和信息的安全性和可靠性&#xff0c;确保它们不接受未授权的输入。 一、安全测试准备 开发者必须认识…

【广州华锐互动】太空探索VR模拟仿真教学系统

随着科技的不断发展&#xff0c;人类对宇宙的探索欲望愈发强烈。火星作为距离地球最近的行星之一&#xff0c;自然成为了人类关注的焦点。近年来&#xff0c;火星探测取得了一系列重要成果&#xff0c;为人类了解火星提供了宝贵的信息。然而&#xff0c;实地考察火星仍然面临着…

认识计算机-JavaEE初阶

文章目录 一、计算机的发展史二、冯诺依曼体系&#xff08;Von Neumann Architecture&#xff09;三、CPU基本工作流程3.1 算术逻辑单元&#xff08;ALU&#xff09;3.2 寄存器&#xff08;Register)和内存&#xff08;RAM&#xff09;3.3 控制单元&#xff08;CU&#xff09;3…

万宾科技智能井盖监测仪器助力建设数字化城市

市政公共设施建设在近几年来发展迅速&#xff0c;市政设备的更新换代&#xff0c;资产管理等也成为其中的重要一项。在市政设施建设过程中&#xff0c;井盖也是不可忽视的&#xff0c;一方面&#xff0c;根据传统的管理井盖模式来讲&#xff0c;缺乏有效的远程监控管理方法和手…

【hcie-cloud】【3】华为云Stack规划设计之华为云Stack交付综述【上】

文章目录 前言华为云Stack交付综述交付流程华为云Stack交付流程华为云Stack安装部署流程 交付工具链华为云Stack交付工具链eDesigner - 让解决方案销售更智能eDesigner配置页面 - 基本信息eDesigner配置页面 - 服务及组网配置eDesigner配置页面 - 弹性云服务器/ECSeDesigner配置…

2024年的后端和Web开发趋势

目录 1 2 3 4 5 1 不断变化的数字创新格局可能让人感觉像是一场无情的竞赛。作为开发人员&#xff0c;你的痛苦是真实的——交付尖端产品、保持竞争力、跟上不断变化的用户期望&#xff0c;综合起来你的压力可能是压倒性的。 但是&#xff0c;如果我们告诉你有一个指南针…

【工具推荐】一键多平台文章发布神器推荐(免费)

hello&#xff0c;大家好&#xff0c;我是你们老朋友洛林&#xff0c;上一篇文章说到自己深受多平台手动发布的折磨「传送门」&#xff0c;准备开发一款文章多平台工具&#xff0c;后来联系到 Wechatsync 原作者进行了简单的沟通&#xff0c;下面是关于以后的一些规划&#xff…

LeetCode(1)合并两个有序数组【数组/字符串】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 88. 合并两个有序数组 1.题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合…

STM32 堆栈空间分布

参考 运行时访问__initial_sp和__heap_base 无RTOS时的情况 在以上配置的情况下&#xff0c;生成工程。在工程的startup.s文件中&#xff0c;由如下代码&#xff1a; Stack_Size EQU 0x400AREA STACK, NOINIT, READWRITE, ALIGN3 __Stack_top ; 自己添加 Stack_Mem…

ResourceQuota对象在K8s上的说明

ResourceQuota资源对象的说明&#xff0c;以及在集群中的作用说明 定义说明 https://kubernetes.io/zh-cn/docs/concepts/policy/resource-quotas/ 集群中的资源组的划分和设计 在具有 32 GiB 内存和 16 核 CPU 资源的集群中&#xff0c;允许 A 团队使用 20 GiB 内存 和 10 核…

完全零基础,教你创建数码配件小程序商城

现如今&#xff0c;随着数码产品的普及&#xff0c;数码配件市场也越来越火爆。如果你有兴趣进入这个行业&#xff0c;并且想要开设一家数码配件小程序商城&#xff0c;那么不要担心&#xff0c;即使你完全零基础也可以轻松实现。 首先&#xff0c;登录【乔拓云】网后台&#x…