王道考研数据结构--5.顺序栈

news2024/10/5 13:38:43

前言

日期:2023.7.25

书籍:2024年数据结构考研复习指导(王道考研系列)

内容:实现顺序栈的基本实现,主要功能如下:
❶ 栈的数据结构
❷ 出栈
❸ 入栈
❹ 判栈空
❺ 读栈顶

1.顺序栈的定义

//1.顺序栈的定义
#define MaxSize 50
typedef int Elemtype;
typedef struct Sqstack{

    Elemtype data[MaxSize];
    int top;//指向栈顶
}Sqstack;

2.顺序栈的初始化和判空

bool Initstack(Sqstack *S){
    S->top=-1;
}
bool StackEmpty(Sqstack S){
    if(S.top==-1) return true;
    else return false;
}

3.顺序栈的出栈和入栈

bool Push(Sqstack *S,Elemtype e){
    if(S->top==MaxSize-1) return false;//栈满报错
    S->top=S->top+1;
    S->data[S->top]=e;
    return true;
} 
bool Pop(Sqstack *S,Elemtype *e){
    if(S->top=-1) return false;

    *e=S->data[S->top];
    S->top=S->top-1;
    return true;
}

4.顺序栈的读取顶元素

bool GetTop(Sqstack S,Elemtype *e){
    if(StackEmpty(S))      return false;   //栈空报错
    *e = S.data[S.top];
    return true;
}

完整代码

#include <stdio.h>
#include <stdlib.h>

#define bool char
#define true 1
#define false 0

//1.顺序栈的定义
#define MaxSize 50
typedef int Elemtype;
typedef struct Sqstack{

    Elemtype data[MaxSize];
    int top;//指向栈顶
}Sqstack;

//2.顺序栈的初始化和判空
bool Initstack(Sqstack *S){
    S->top=-1;
}
bool StackEmpty(Sqstack S){
    if(S.top==-1) return true;
    else return false;
}

//3.顺序栈的出栈和入栈
bool Push(Sqstack *S,Elemtype e){
    if(S->top==MaxSize-1) return false;//栈满报错
    S->top=S->top+1;
    S->data[S->top]=e;
    return true;
} 
bool Pop(Sqstack *S,Elemtype *e){
    if(S->top=-1) return false;

    *e=S->data[S->top];
    S->top=S->top-1;
    return true;
}
//4.顺序栈的读取顶元素
//【9】读栈顶元素
bool GetTop(Sqstack S,Elemtype *e)
{
    if(StackEmpty(S))      return false;   //栈空报错
    *e = S.data[S.top];
    return true;
}

int main(){
    Sqstack S;
    Initstack(&S);
    Push(&S,1);
    Push(&S,2);
    Push(&S,3);
    Push(&S,4);
    Push(&S,5);
    Push(&S,6);

    Elemtype X; //用与保存出栈和读栈顶元素返回的变量的值
    int count = S.top;
    for(int i = 0;i <= count;i++){
        printf("i = %d\n",i);
        GetTop(S,&X);
        printf("GetTop X = %d\n",X);
        Pop(&S,&X);
        printf("Pop X = %d\n",X);
    }

    return 0;
}

 

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

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

相关文章

AP5216 DC-DC降恒流驱动IC LED电动摩托汽车 转向灯刹车灯雾灯驱动

产品描述 AP5216 是一款 PWM工作模式, 高效率、外围简单、内置功率管&#xff0c;适用于5V&#xff5e;100V输入的高精度降压 LED 恒流驱动芯片。输出最大功率可达9W&#xff0c;最大电流 1.0A。AP5216 可实现全亮/半亮功能切换&#xff0c;通过MODE 切换&#xff1a;全亮/半亮…

`MySQL`压缩包中的目录结构

MySQL压缩包中的目录结构如下&#xff1a; docs:存放文档和说明文件。include:存放头文件&#xff0c;用于在源代码中包含其他文件或库的函数、变量声明等。lib:存放库文件&#xff0c;包括MySQL客户端库和其他依赖库。bin:存放可执行文件&#xff0c;如MySQL服务器、客户端工…

jQuery入门到实战

jQuery入门到实战 &#x1f607;博主简介&#xff1a;我是一名正在攻读研究生学位的人工智能专业学生&#xff0c;我可以为计算机、人工智能相关本科生和研究生提供排忧解惑的服务。如果您有任何问题或困惑&#xff0c;欢迎随时来交流哦&#xff01;&#x1f604; ✨座右铭&…

iOS transform rotate总结

研究了一下transform的旋转设置&#xff0c;调了半天还以为是旋转写错了&#xff0c;发现是两个不同的view对象写错了&#xff0c;不管怎么说&#xff0c;还是记录一下旋转相关的操作吧。 参数都是弧度。 以一个图片来举例。 let img UIImageView.init() img.image UIImage…

计算机科学cs/电子信息ei面试准备——数学基础/线性代数复习

1. 中值定理 中值定理是反映函数与导数之间联系的重要定理&#xff0c;也是微积分学的理论基础&#xff0c;在许多方面它都有重要的作用&#xff0c;在进行一些公式推导与定理证明中都有很多应用。中值定理是由众多定理共同构建的&#xff0c;其中拉格朗日中值定理是核心&…

未来行星探索希望:新型多脚机器人-团队版

机器人正在探索一个模拟的外星环境 即使一个机器人失败了&#xff0c;其余的团队成员也可以抵消它的损失。 背景 虽然探测器取得了令人难以置信的发现&#xff0c;但它们的轮子可能会拖慢它们的速度&#xff0c;而不稳定的地形可能会导致损坏。虽然没有东西可以取代“毅力号”…

使用Jenkinsfile实现接口自动化测试持续集成

这里写目录标题 一、Jenkins Pipeline1、什么是流水线类型&#xff1f;2、流水线几个步骤: 二、用Jenkinsfile的方式去执行代码1、将jenkinsfile推送到远程仓库2、配置流水线 三、Jenkinsfile中post的使用1、背景和目的2、jenkinsfile文件编写3、构建job4、发送钉钉5、发送邮件…

周赛355(模拟、贪心、DFS+位运算+问题转化)

文章目录 周赛355[2788. 按分隔符拆分字符串](https://leetcode.cn/problems/split-strings-by-separator/)模拟&#xff08;注意转义&#xff09; [2789. 合并后数组中的最大元素](https://leetcode.cn/problems/largest-element-in-an-array-after-merge-operations/)贪心 [2…

Cryptopedia第4期|参与Sui生态交互,赢取SUI以及额外奖励

OKX Web3 wallet Cryptopedia第4期&#xff08;Sui生态交互专场&#xff09;现已正式开启。本期活动设置Cetus、MovEX、NAVI Protocol、Scallop和Typus Finance 5个DApp交互任务&#xff0c;用户每完成其中1个DApp交互任务并验证&#xff0c;即可参与抽取活动专属NFT。同时还有…

32位Cortex-M4 MCU:LPC54607J256ET180E、LPC54605J512BD100K 180MHz嵌入式微控制器

LPC546xx 32 位微控制器(MCU) 具有丰富的外设集、极低的功耗和增强的调试功能。 LPC546xx MCU系列采用ARM Cortex-M4内核&#xff0c;可提供以太网支持&#xff0c;并设有一个TFT LCD控制器和两个CAN FD模块。LPC546xx MCU旨在提高灵活性和性能可扩展性&#xff0c;可提供高达1…

小说小程序亲测完整版

小说小程序亲测完整版超火的微信小说小程序源码-自带采集 本套源码自带采集,拿到手的时候没有安装教程不过源码在测试的时候给大家把安装教程给补上了安装教程:PHP选择5.6以上的版本上传我们的后端解压 伪静态选择thinkphp 修改数据库链接文件config/database.php 然后我们…

小型企业使用CRM如何进行线索管理?有哪些功能?

很多小型企业面临着线索渠道单一、线索质量差、缺乏有效的跟进手段等问题。为了有效获取潜在客户&#xff0c;提高销售业绩&#xff0c;建议小型企业使用Zoho CRM系统&#xff0c;为您提供专业的小型企业CRM线索管理解决方案。 1、多渠道获客 CRM可以帮助企业从多个渠道触达客…

24考研数据结构-线性表4

目录 2.4.4单链表的查找操作&#xff08;默认带头节点&#xff0c;不带头节点后续更新&#xff09;2.4.4.1 按位查找操作2.4.4.2 按值查找操作2.4.4.3 求单链表的长度&#xff08;带和不带头节点都写了&#xff09;2.4.4.4 知识回顾与重要考点 2.4.5 单链表的创建操作2.4.5.1 头…

删除Windows顽固启动项Program

卸载软件之后可能会遇到任务管理器中启动项显示有Program这种无效项目的情况 无效项目如图所示: 解决方法 打开注册表 Win R 打开注册表后定位到 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run 可以直接复制粘贴到地址栏进行跳…

低版本打不开高版本CAD怎么办?教你转换CAD版本方法

转换CAD文件版本的好处是多方面的。首先&#xff0c;它可以确保文件格式的兼容性&#xff0c;从而使其可以在不同版本的CAD软件中打开和编辑。这是非常重要的&#xff0c;因为如果您想在不同的计算机上查看或编辑CAD文件&#xff0c;您可能需要使用不同版本的CAD软件。通过转换…

LLaMA2可商用|GPT-4变笨|【2023-0723】【第七期】

一、大咖观点&#xff1a; 傅盛&#xff1a;ChatGPT时代如何创业 - BOTAI - 博客园Google 已经被OpenAI 超越了吗&#xff1f;| AlphaGo 之父深度访谈《人民日报》&#xff1a;大模型的竞争&#xff0c;是国家科技战略的竞争WAIC 2023 | 张俊林&#xff1a;大语言模型带来的交…

Jmeter接口自动化生成测试报告html格式

jmeter自带执行结果查看的插件&#xff0c;但是需要在jmeter工具中才能查看&#xff0c;如果要向领导提交测试结果&#xff0c;不够方便直观。 笔者刚做了这方面的尝试&#xff0c;总结出来分享给大家。 这里需要用到ant来执行测试用例并生成HTML格式测试报告。 一、ant下载安…

Android11 相机拍照权限,以及解决resolveActivity返回null

一、配置拍照和读写权限 <uses-permission android:name"android.permission.CAMERA"/> <uses-feature android:name"android.hardware.camera" /><uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE"/&…

swagger快速升级方案

背景 在使用SpringBoot 2.6以前去创建API文档工具一般会采用SpringFox提供的Swagger库&#xff0c;但是由于SpringBoot版本的不断升级和SpringFox摆烂不更新&#xff0c;导致了SpringBoot2.6之后的项目无法使用SpringFox去生成API文档&#xff0c;或者可以使用但是有很多的bug…

PyTorch深度学习实战(6)——神经网络性能优化技术

PyTorch深度学习实战&#xff08;6&#xff09;——神经网络性能优化技术 0. 前言1. 数据准备1.1 数据集分析1.2 数据集加载 2. 使用 PyTorch 训练神经网络2.1 神经网络训练流程2.2 PyTorch 神经网络训练 3. 缩放数据集4. 修改优化器5. 构建深层神经网络小结系列链接 0. 前言 …