03-3.1.2 栈的顺序存储的实现

  • 👋 Hi, I’m @Beast Cheng
  • 👀 I’m interested in photography, hiking, landscape…
  • 🌱 I’m currently learning python, javascript, kotlin…
  • 📫 How to reach me --> 458290771@qq.com

喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑‍💻
此外,《程序员必备技能》专栏和《程序员必备工具》专栏(该专栏暂未开设)日后会逐步更新,感兴趣的小伙伴可以点一下订阅、收藏、关注!🚀
谢谢大家!🙏

用顺序存储方式实现的栈

顺序栈的定义

回顾顺序存储的定义[[2.2.1 顺序表的定义#^28be66]]

#define MaxSize 10   //定义栈中元素的最大个数
typedef struct{ElemType data[MaxSize];   //静态数组存放栈中元素int top;         //栈顶指针
}SqStack;

基本操作

创(初始化)

void testStack(){SqStack S; //声明一个顺序栈(分配空间)//......
}

增(进栈)

bool Push(SqStack &S, ElemType x){if(S.top == MaxSize-1) //栈满,报错return false;S.top = S.top + 1;     //指针先加 1S.data[S.top] = x;     //新元素入栈return true;
}//入栈操作这两句可以等价为:
S.data[++S.top] = x;

删(出栈)

bool Pop(SqStack &S, ElemType &x){if(S.top == -1)     //栈空,报错return false;x = S.data[S.top];  //栈顶元素先出栈S.top = S.top - 1;  //指针再-1return true;
}//和入栈操作类似,出栈操作这两句可以等价为:
x = S.data[S.top--];

查(获取栈顶元素)

x = S.data[S.top - 1];

判空、判满

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

另一种方式

#define MaxSize 10
typedef struct{ElemType data[MaxSize];//静态数组存放栈中元素int top;       //栈顶指针
}SqStack;//初始化栈
void InitStack(SqStack &S){S.top = 0;     //初始化栈顶指针;
}void testStack(){SqStack S;     //声明一个顺序栈(分配空间)InitStack(S);//…后续操作
}//判断栈空
bool StackEmpty(SqStack S){if(S.top == 0)return true;  //栈空elsereturn false; //不空
}

共享栈

#define MaxSize 10
typedef struct{ElemType data[MaxSize];//静态数组存放栈中元素int top0;              //0号栈栈顶指针int top1;              //1号栈栈顶指针
}ShStack;//初始化栈
void InitStack(ShStack &S){S.top0 = -1;           //初始化栈顶指针S.top1 = MaxSize;
}

判断共享栈栈满的条件
top0 + 1 == top1

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

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

相关文章

邮件地址搜索软件

易邮件地址搜索大师  一、易邮件地址搜索大师特色 — 易邮件地址搜索大师是一款搜索邮件地址和手机号码的软件,可以按整站搜索,也可以按关键词搜索。使用方法非常简单和方便。 — “整站搜索”可以搜索有很多邮件地址的单一网站,主要用于…

Technart电动螺丝刀TN101控制器维修

Technart电动螺丝刀以其高效、稳定和精确的扭矩控制而闻名。然而,即使优质的产品,在长时间的使用下,也可能会出现TECHNART电动螺母扳手控制器故障。 常见故障及维修方法 1. 控制器不工作 症状:电动螺丝刀无法启动,或启…

Python怎么染色:深入探索Python中的文本和图形着色技巧

Python怎么染色:深入探索Python中的文本和图形着色技巧 在Python编程中,染色或着色不仅限于文本输出,还涉及图形、图像甚至数据可视化的多个层面。本文将带你走进Python的染色世界,从四个方面、五个方面、六个方面和七个方面详细…

【WEEK15】 【DAY2】【DAY3】Email Tasks【English Version】

Continuation from【WEEK15】 【DAY1】Asynchronous Tasks【English Version】 Contents 17. Asynchronous, Timed, and Email Tasks17.2. Email Tasks17.2.1. Email sending is also very common in our daily development, and Springboot provides support for this as well…

用户的权限

一,用户权限基础知识 1,用户的权限有: r:读 w:写 x:执行 2,文件的权限: r:可以执行cat、head、tail等命令读取文件中的内容 w:可以用vi/vim或者重定向等…

JeecgBoot/SpringBoot升级Nacos(2.0.4到2.2.3)启动报错

错误如下&#xff1a; 报这种错误基本就很头大了&#xff0c;是框架不兼容的问题&#xff0c;自己找很难找到解决方法。 解决方案是把SpringBoot框架版本调高。 修改前&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId&g…

Dell戴尔XPS 16 9640 Intel酷睿Ultra9处理器笔记本电脑原装出厂Windows11系统包,恢复原厂开箱状态oem预装系统

下载链接&#xff1a;https://pan.baidu.com/s/1j_sc8FW5x-ZreNrqvRhjmg?pwd5gk6 提取码&#xff1a;5gk6 戴尔原装系统自带网卡、显卡、声卡、蓝牙等所有硬件驱动、出厂主题壁纸、系统属性专属联机支持标志、系统属性专属LOGO标志、Office办公软件、MyDell、迈克菲等预装软…

Linux基础 (十四):socket网络编程

我们用户是处在应用层的&#xff0c;根据不同的场景和业务需求&#xff0c;传输层就要为我们应用层提供不同的传输协议&#xff0c;常见的就是TCP协议和UDP协议&#xff0c;二者各自有不同的特点&#xff0c;网络中的数据的传输其实就是两个进程间的通信&#xff0c;两个进程在…

32C3-2模组与乐鑫ESP32­-C3­-WROOM­-02模组原理图、升级口说明

模组原理图&#xff1a; 底板原理图&#xff1a; u1 是AT通信口&#xff0c;wiif-tx wifi-rx 是升级口&#xff0c;chip-pu是reset复位口&#xff0c;GPIO9拉低复位进入下载模式 ESP32-WROOM-32 系列硬件连接管脚分配 功能 ESP32 开发板/模组管脚 其它设备管脚 下载固件…

【Python报错】AttributeError: ‘NoneType‘ object has no attribute ‘xxx‘

成功解决“AttributeError: ‘NoneType’ object has no attribute ‘xxx’”错误的全面指南 一、引言 在Python编程中&#xff0c;AttributeError是一种常见的异常类型&#xff0c;它通常表示尝试访问对象没有的属性或方法。而当我们看到错误消息“AttributeError: ‘NoneTyp…

激发AI创新潜能,OPENAIGC开发者大赛赛题解析

人工智能&#xff08;AI&#xff09;的飞速发展&#xff0c;特别是AIGC、大模型、数字人技术的成熟&#xff0c;不仅改变了数据处理和信息消费的方式&#xff0c;也为企业和个人提供了前所未有的机遇。在这种技术进步的背景下&#xff0c;由联想拯救者、AIGC开放社区、英特尔共…

PostgreSQL的视图pg_stat_database

PostgreSQL的视图pg_stat_database pg_stat_database 是 PostgreSQL 中的一个系统视图&#xff0c;用于提供与数据库相关的统计信息。这个视图包含了多个有用的指标&#xff0c;可以帮助数据库管理员了解数据库的使用情况和性能。 以下是 pg_stat_database 视图的主要列和其含…

三生随记——理发店诡事

在城市的边缘&#xff0c;隐藏着一家不起眼的理发店。它没有华丽的装饰&#xff0c;也没有喧嚣的广告&#xff0c;只是静静地矗立在一条狭窄的小巷尽头。据说&#xff0c;这家店只在深夜营业&#xff0c;而且只接待那些真心寻求改变的人。 有一天&#xff0c;一个名叫林逸的年轻…

基于SSM+Jsp的高校二手交易平台

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

【远程连接服务器】—— Workbench和Xshell远程连接阿里云服务器失败和运行Xshell报错找不到 MSVCP110.d的问题分析及解决

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、远程连接不上服务器1. Workbench远程连接失败2.Xshell也连接不上3.解决方法(1)问题描述&#xff1a;(2)解决&#xff1a; 4.再次连接服务器 二、运行Xshell…

Android 上层的View透传/不透传 点击事件 到下层

今天有个需求就是在本不该有laoding的地方加个 laoding&#xff0c;源码中有腾讯的QMUI&#xff0c;所以选用了&#xff0c;QMUILoadingView。 但是有个问题&#xff0c;就是即使这个View盖在最上层&#xff0c;显示出来的时候&#xff0c;依然可以点击下边的控件。 处理&#…

【前端面试3+1】18 vue2和vue3父传子通信的差别、props传递的数据在子组件是否可以修改、如何往window上添加自定义属性、【多数元素】

一、vue2和vue3父传子通信的差别 1、Vue2 父组件向子组件传递数据通常通过props属性来实现。父组件可以在子组件的标签中使用v-bind指令将数据传递给子组件的props属性。在子组件中&#xff0c;可以通过props属性来接收这些数据。这种方式是一种单向数据流的方式&#xff0c;父…

常用位算法

1&#xff0c;位翻转 n^1 &#xff0c;n 是0 或 1&#xff0c;和 1 异或后位翻转了。 2&#xff0c; 判断奇偶&#xff0c;n&1&#xff0c;即判断最后一位是0还是1&#xff0c;如果结果为0&#xff0c;就是偶数&#xff0c;是1 就是奇数。 获取 32 位二进制的 1 的个数&a…

python-opencv图像分割

文章目录 二值化图像骨骼连通域分割 二值化 所谓图像分割&#xff0c;就是将图像的目标和背景分离开来&#xff0c;更直观一点&#xff0c;就是把目标涂成白色&#xff0c;背景涂成黑色&#xff0c;言尽于此&#xff0c;是不是恍然大悟&#xff1a;这不就是二值化么&#xff1…

香橙派 AIpro 的系统评测

0. 前言 你好&#xff0c;我是悦创。 今天受邀测评 Orange Pi AIpro开发板&#xff0c;我将准备用这个测试简单的代码来看看这块开发版的性能体验。 分别从&#xff1a;Sysbench、Stress-ng、PyPerformance、RPi.GPIO Benchmark、Geekbench 等方面来测试和分析结果。 下面就…