Stack数据结构设计模板

第三章

栈、队列、数组
1.栈

1.1 顺序栈

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#define MaxSize 20
typedef int ElemType;
//顺序栈的定义
typedef struct {ElemType data[MaxSize];int top;
}SqStack;
// 初始化顺序栈
void InitSqStack(SqStack &S){S.top = -1;
};
// 入栈(增)
bool Push(SqStack &S,ElemType x){if(S.top == MaxSize-1)return false;//栈已满S.data[++S.top] = x;return true;
}
// 出栈(删)
bool Pop(SqStack&S,ElemType &x){if(top==-1) return false;//栈为空x = S.data[S.top--];return true;
}
// 取栈顶
bool GetTop(SqStack S,ElemType &x){if(S.top==-1)return false;//栈空x = S.data[S.top];return true;
}
// 栈判空
bool IsEmpty(SqStack &s){return S.top==-1? true:false;
}
// 清空栈(逻辑清空)void DestroyStack(SqStack&S){S.top=-1;
}
// 判满
bool IsFull(SqStack&S){//注意:判满的条件可能不同,请根据题意要求设计if(S.top==MaxSize-1)return true;return false;
}

1.2链栈

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

typedef  int ElemType ;
//链栈的定义(本质上就是单链表,只是所有的操作都限制在表头进行)
typedef struct Stack{ElemType data;struct Stack *next;
} liStack ,*LiStack;// 初始化// 带头结点的链栈
bool InitLiStack(LiStack&S){S = new liStack;if(S==nullptr)return false;S->next = nullptr;return true;
}
//不带头结点的链栈
bool InitLiStack2(LiStack &S){S  = nullptr;return true;
}
void Push(LiStack &S, ElemType x) {LiStack t = new Stack;if (!t) {std::cerr << "Memory allocation failed for new stack node." << std::endl;return;}t->data = x;t->next = S->next;S->next = t;
}//入栈(不带头结点)
void Push2(LiStack&S,ElemType x){//cout<<"insert ele:"<<x<<endl; //ouput DebugliStack*t = new liStack;t->data = x;t->next = S;S = t;
}
// 出栈
bool Pop(LiStack&S,ElemType &x){if(!S->next)return false;liStack*q = S->next;x = q->data;S->next = q->next;delete q;return true;
}
// 出栈(不带头节点)bool Pop2(LiStack&S,ElemType &x){if(S==nullptr)return false;liStack*q = S;x = q->data;S = q->next;delete q;return true;
}// 取栈顶(带头结点)
bool GetTop(LiStack S,ElemType &x){if(S->next==nullptr)return false;x = S->next->data;return true;
}
// 取栈顶(不带头结点)
bool GetTop2(LiStack S ,ElemType &x){if(S==nullptr)return false;x = S->data;return true;
}//工具函数(生成随机数)
int MyRandom(int low,int high) {// 创建一个随机数引擎std::random_device rd;std::mt19937 gen(rd()); // 使用 Mersenne Twister 引擎// 定义随机数分布std::uniform_int_distribution<> dis(low, high); // 生成范围在 [1, 100] 内的整数// 生成随机数int random_number = dis(gen);return random_number;
}
void print(LiStack&S){liStack* p = S;while(p){cout<<p->data<<"->";p = p->next;}cout<<"NULL"<<endl;
}while(p){cout<<p->data<<"->";p = p->next;}cout<<"NULL"<<endl;
}

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

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

相关文章

UTONMOS:真正的“游戏元宇宙”还有多遥远?

元宇宙来源于科幻小说的概念&#xff0c;已成为真实世界中的流行语。围绕这一新兴概念&#xff0c;一场产、学、研的实践正在展开。 数字化转型中&#xff0c;元宇宙能否担当大任&#xff1f;这些新概念在中国语境下如何落地&#xff1f;本文将深入挖掘国内元宇宙游戏产业的发…

分布式架构|打造高效、稳定、灵活的现代IT基石

分布式架构&#xff1a;打造高效、稳定、灵活的现代IT基石 一、独立扩展&#xff1a;应对业务增长与用户激增二、高可用性&#xff1a;确保系统稳定运行三、可维护性&#xff1a;降低系统复杂性四、技术选型灵活性&#xff1a;充分利用各种技术优势五、数据隔离与安全性 随着信…

给网站网页PHP页面设置密码访问代码

将MkEncrypt.php文件上传至你网站根目录下或者同级目录下。 MkEncrypt.php里面添加代码&#xff0c;再将调用代码添加到你需要加密的页进行调用 MkEncrypt(‘123456’);括号里面123456修改成你需要设置的密码。 密码正确才能进去页面&#xff0c;进入后会存下cookies值&…

鸿蒙开发核心技术都有哪些【都是从零开始】

鸿蒙开发核心技术都有哪些&#xff1f;&#xff1a;【持续1年的时间公关鸿蒙技术】 我们能做哪些呢&#xff1f; 还是从UI业务开始吧 面试题1&#xff1a; 基于STAGE模型项目重构等问题 代理设计模式&#xff0c;业务与架构隔离 中介者模式&#xff0c;和代理设计模式的区别…

解决Gitlab集成Jira时报SSL证书问题

1. 问题描述 在gitlab中集成jira的时候&#xff0c;由于jira是企业内部网址&#xff0c;并使用自己签名的SSL证书&#xff0c;一直会报证书验证不过的问题&#xff0c;报错信息如下&#xff1a; Connection failed. Check your integration settings. SSL_connect returned1 …

【k8s多集群管理平台开发实践】八、client-go实现service读取列表、创建service、读取yaml配置并更新

文章目录 简介 一.k8s的service列表1.1.controllers控制器代码1.2.models模型代码 二.创建service2.1.controllers控制器代码2.2.models模分代码 三.读取和更新service的yaml配置3.1.controllers控制器代码3.2.models模型代码 四.路由设置4.1.路由设置 五.前端代码5.1.列表部分…

【RT-DETR有效改进】 主干篇 | 2024.5全新的移动端网络MobileNetV4改进RT-DETR(含MobileNetV4全部版本改进)

&#x1f451;欢迎大家订阅本专栏&#xff0c;一起学习RT-DETR&#x1f451; 一、本文介绍 本文给大家带来的改进机制是MobileNetV4&#xff0c;其发布时间是2024.5月。MobileNetV4是一种高度优化的神经网络架构&#xff0c;专为移动设备设计。它最新的改动总结主要有两点&…

flutter报错

组件相关 type ‘List’ is not a subtype of type ‘List’ children: CardList.map((item) > Container( 加上 *** < Widget>*** 正常 type ‘(dynamic, dynamic) > Container’ is not a subtype of type ‘(CardType) > Widget’ of ‘f’ children: CardL…

【管理篇】如何提升管理中的沟通效率?

目录标题 管理沟通那些事如何提升沟通效率?&#x1f525;如何提升沟通技能&#xff1f; 向上沟通、员工激励和团队凝聚力提升 是管理沟通上比较难得问题 管理沟通那些事 管理沟通让技术管理者们痛苦的主因是确定性和规则性的减弱&#xff0c;不确定性的大幅度上升&#xff0c…

革新品质检测,质构科技重塑肉类行业新篇章

革新品质检测&#xff0c;质构科技重塑肉类行业新篇章 在现代社会&#xff0c;消费者对食品安全和品质的要求日益提升&#xff0c;特别是在肉类行业。为了满足这一市场需求&#xff0c;质构科技凭借其精准、高效的优势&#xff0c;正逐渐成为肉类品质检测的新星。今天&#xf…

前端传递list(数组)类型参数,后端接收失败

一顿报错,我之前遇到的list都是Long类型 貌似用GET也是可以的,但是很奇怪一直报错 就是不可以 后来去百度 查询到可以用两种方法解决这个问题 1、拆开 传 以GET方式&#xff0c;后端GetMappingRequestParam接收。 2、以Post方式传&#xff0c;后端创建dto PostMappingReques…

【spring】Bean的生命周期回调函数和Bean的循环依赖

目录 1、Bean的生命周期 2、Bean的生命周期回调函数 2.1、初始化的生命周期回调 2.2、销毁的生命周期回调 3、Bean的循环依赖 1、Bean的生命周期 spring的bean的生命周期主要是创建bean的过程&#xff0c;一个bean的生命周期主要是4个步骤&#xff1a;实例化&#xff0c;…

AI时代的就业转型与个人发展

AI时代的就业转型与个人发展&#xff1a;机遇与挑战并存 AI出现的背景&#xff1a;技术革命的浪潮 随着21世纪信息技术的突飞猛进&#xff0c;人工智能&#xff08;Artificial Intelligence, AI&#xff09;作为一场技术革命的产物&#xff0c;正逐渐从科幻小说走向现实世界的…

Pycharm链接远程服务器GPU跑深度学习模型

我们在学习深度学习时&#xff0c;常常会遇到自己笔记本电脑性能不够&#xff0c;显卡性能低&#xff0c;在运行深度学习项目的时候很浪费时间。如果实验室有可用于深度学习的服务器的话&#xff0c;会大大减少代码执行时间&#xff0c;服务器上的GPU算力一般都很高。 本文主要…

密室逃脱游戏-第12届蓝桥杯省赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第58讲。 密室逃脱游戏&…

Unity与C#的关系

第一&#xff0c;我们首先需要知道Unity与C#的关系是什么&#xff1f; 第二&#xff0c;我们要明白为什么Unity会使用C#&#xff0c;而不是C&#xff1f; 第三&#xff0c;我们需要知道Unity是怎么使用C#的&#xff1f; 第一点&#xff1a; 先说结论&#xff1a;C#是Unity用…

Linux性能压测指标信息

1、CPU使用 服务器CPU整体负载信息 可以查看top命令输出的第三行数据 查看多核CPU命令 mpstat -P ALL 和 sar -P ALL top命令执行后输入1 2、内存使用 top命令或者free命令来查看内存的信息&#xff0c;第一行是物理内存使用&#xff0c;第二行是虚拟内存使用(交换空间)。…

mvc 异步请求、异步连接、异步表单

》》》 利用Jquery ajax 》》》 mvc 异步表单 c# MVC 添加异步 jquery.unobtrusive-ajax.min.js 方法 具–>Nuget程序包管理器–>程序包管理器控制台 在控制台输入&#xff1a;PM>Install-Package Microsoft.jQuery.Unobtrusive.Ajax –version 3.0.0 回车执行即可在…

多C段的美国站群服务器有什么用途?

多C段的美国站群服务器有什么用途? 多C段的美国站群服务器是一种常见的网络运营策略&#xff0c;其用途主要体现在以下几个方面&#xff1a; 多C段的美国站群服务器有什么用途? 1. 提高站点排名和流量 部署多个站点在不同的C段IP地址上&#xff0c;可以通过不同的IP地址发布…

AI视频教程下载:学会用AI创作文本图片音频视频

在不断发展的科技领域&#xff0c;人工智能 (AI) 是毋庸置疑的冠军&#xff0c;它是一种不断创新的力量&#xff0c;在我们的生活中扮演着越来越重要的角色。随着 2023 年的到来&#xff0c;我们诚挚地欢迎您加入人工智能精通课程的大门。 这不仅仅是一个课程&#xff0c;它专为…