数据结构大合集03——栈的相关函数运算算法

函数运算算法合集03

  • 顺序栈的结构体
  • 顺序栈的基本运算的实现
    • 1. 初始化栈
    • 2. 销毁栈
    • 3. 判断栈是否为空
    • 4. 进栈
    • 5. 出栈
    • 6. 取栈顶元素
  • 链栈的结构体
  • 链栈的基本运算的实现
    • 1. 初始化栈
    • 2. 销毁栈
    • 3. 判断是否为空
    • 4. 进栈
    • 5. 出栈
    • 6. 取栈顶元素

注:
本篇文章的概念合集
数据结构的概念大合集03(栈)

顺序栈的结构体

//顺序栈的结构体
typedef struct{ElemType data[MaxSize];int top;
}SqStack;

顺序栈的基本运算的实现

1. 初始化栈

//初始化栈
void InitStack(SqStack *s)
{s = (SqStack*)malloc(sizeof(SqStack));s->top = -1;
}

2. 销毁栈

//销毁栈
void DestroyStack(SqStack *s)
{free(s);
}

3. 判断栈是否为空

//判断栈是否为空
bool StackEmpty(SqStack *s)
{return (s->top == -1);
}

4. 进栈

//进栈
bool Push(SqStack *s,ElemType e){if(s->top == MaxSize){return false;}s->top++;s->data[s->top] = e;return true;
}

5. 出栈

//出栈
bool Pop(SqStack *s,ElemType *e){if(s->top == -1){return false;}e = s->data[s->top];s->top--;return true;
}

6. 取栈顶元素

//取栈顶元素
bool GetTop(SqStack *s, ElemType *e){if(s->top == -1){return false;}e = s->data[s->top];return true;
}

链栈的结构体

//链栈的结构体
typedef struct linknode
{ElemType data;struct linknode *next;
} LinkNode;

链栈的基本运算的实现

1. 初始化栈

//初始化栈
void InitStack(LinkNode *s)
{s = (LinkNode *)malloc(sizeof(LinkNode));s->next = NULL;
}

2. 销毁栈

//销毁栈
void DestroyStack(LinkNode *s){LinkNode * pre = s,*p = s->next;while(p != NULL){free(pre);pre = pp = pre->next;}free(pre);
}

3. 判断是否为空

//判断是否为空
bool stackEmpty(LinkNode *s)
{return(s->next == NULL);
}

4. 进栈

//进栈
bool Push(LinkNode *s, ElemType e)
{LinkNode *p;p = (LinkNode *)malloc(sizeof(LinkNode));p->data = e;p->next = s->next;s->next = p;return true;
}

5. 出栈

//出栈
bool Pop(LinkNode *s,ElemType *e)
{LinkNode *p;if(s->next == NULL){return false;}p = s->next;e = p->next;s->next = p->next;free(p);return true;
}

6. 取栈顶元素

//取栈顶元素
bool GetTop(LinkNode *s,ElemType *e)
{
if(s->next == NULL)
{
return false;
}
e = s->next->data;
return true;
}

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

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

相关文章

RocketMQ的重试机制

RocketMQ的重试机制是指:当消费者消费消息失败时,RocketMQ会在一定时间后重新将消息发送给消费者进行消费,以确保消息的可靠消费。 RocketMQ的重试机制主要体现在: 1.自动重试:Consumer在消费失败后,会在一定重试策略下定期重试消费失败的消息,直到成功或达到最大重试次数。 …

边缘检测-Tiny and Efficient Model for the Edge Detection Generalization

源代码: https://github.com/xavysp/TEED 论文地址:https://arxiv.org/pdf/2308.06468.pdf 大多数高级计算机视觉任务依赖于低级图像操作作为其初始过程。边缘检测、图像增强和超分辨率等操作为更高级的图像分析提供了基础。在这项工作中,我们考虑三个…

帮助读者掌握C语言编程基础知识的书籍

帮助读者掌握C语言编程的基础知识,了解如何将人工智能技术应用于自己的编程项目。 人工智能编程(赋能C语言) 作者: 黄箐、廖云燕、曾锦山、邢振昌 ISBN号: 9787302648796 出版日期: 2023-11-01 本书以C…

刷题DAY26 | LeetCode 39-组合总和 40-组合总和II 131-分割回文串

39 组合总和(medium) 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates…

小程序绕过 sign 签名

之前看到了一篇文章【小程序绕过sign签名思路】之前在做小程序渗透时也遇到了这种情况,但是直接放弃测试了,发现这种思路后,又遇到了这种情况,记录下过程。 并没有漏洞分享,仅仅是把小程序也分享出来,方便…

什么是数组流

字节数组流 1.ByteArrayInputStream和ByteArrayOutputStream分别使用字节数组作为流的源和目标。 2.ByteArrayInputStream构造方法 •ByteArrayInputStream (byte[] buf) •ByteArrayInputStream (byte[] buf,int offset,int length) 3.ByteArrayInputStream常用方法 • public…

如何建立数字化招标采购(系统)评价体系?

前言 长期以来,采购的经济目标占据了主导地位,采购人、采购代理机构或出于“经济人”的本性,或迫于采购资金的限制,极易采购便宜的产品、工程和服务,而忽略了采购的价值。 有效的采购制度,不仅仅以控制成…

【以图搜图】GPUNPU适配万物识别模型和Milvus向量数据库

目录 以图搜图介绍项目地址Milvuscv_resnest101_general_recognition 代码使用流程结果展示模型部署环境Milvus部署及使用docker安装docker-compose安装Milvus可视化工具Attu进入网页端 Data数据示例点个赞再走呗!比心💞️ 以图搜图 • 🤖 Mo…

[视觉基础知识]: 点云数据

https://pointclouds.org/documentation/tutorials/pcd_file_format.html PCD 不是第一种支持 3D 点云数据的文件类型。尤其是计算机图形学和计算几何学社区,已经创建了多种格式来描述使用激光扫描仪获取的任意多边形和点云。其中一些格式包括: PLY - …

Go微服务实战——服务的监控与链路追踪(监控数据可视化)

链路追踪背景 对于早期系统或者服务来说,开发人员一般通过打日志的方式来进行埋点(常用的数据采集方式),然后再根据日志系统和性能监控定位及分析问题。对于单体的应用通过日志系统完全可以定位到问题,从而排查异常。…

Jpg图片怎么变成gif?三步在线转换gif动画

JPG是一种常见的图像格式,而GIF动态则是一种流行的动态图像格式。如果你想将多张JPG图片合成为一个GIF动画,下面是一些简单的方法来帮助你完成这个任务。通过使用Gif动画制作工具-GIF中文网,上传多张jpg格式图片轻松一键在线转换gif动画&…

uniapp H5打开应用商店

/* 点击事件 */downApp() {let sysInfo uni.getSystemInfoSync()if (sysInfo.osName ios) { // ios/* 跳转到ios商店 id后面接的就是苹果id */window.location.replace(itms-appss://apps.apple.com/cn/app/id6479005866)} else { // androidthis.detectDeviceBrand(sysInfo…

【shell】定时检查说明

想法:定一个时间,然后查询需要格式的相关文件,移到一个新的文件夹下面 文件单独检查 进入账号su root之后,进入到crontab -e进行添加 #凌晨1点10分 0点30分 10 1 * * * /data/edw_ods/check_st/1move_file.sh 30 0 * * * /data…

Python爬虫获取接口数据

Python爬虫获取接口数据 正常人的操作​​​​​​​​​​爬虫的思路标题获取请求信息标题请求转换为代码完整代码请求返回信息执行程序获取静态网页数据的教程,适用于我们要爬取的数据在网页源代码中出现,但是还是有很多的数据是源代码中没有的,需要通过接口访问服务器来获…

Docker与containerd:容器技术的双璧

🐇明明跟你说过:个人主页 🏅个人专栏:《Docker幻想曲:从零开始,征服容器宇宙》 🏅 🔖行路有良友,便是天堂🔖 目录 一、前言 1、Docker和containerd的背景…

ISO9001质量管理体系是什么,ISO9001认证详细介绍

ISO9001质量管理体系是国际标准化组织(ISO)制定的一套质量管理标准,旨在帮助企业建立有效的质量管理体系,提高产品和服务的质量水平,增强企业的竞争力和市场信誉。ISO9001认证则是企业按照ISO9001标准建立起质量管理体…

cobbler批量装机工具,可以实现同时装多台或多台不同系统的主机,也可以实现定制安装

cobbler批量装机工具 文章目录 cobbler批量装机工具1. cobbler简介2. cobbler服务端部署uos3. 客户端安装(内存和cpu可以多个点,以免后面出错)4.cobbler服务端部署centos75.客户端安装6.cobbler服务端部署centos87.客户端安装8.cobbler服务端部署rockylinux99.客户端…

还在苦苦寻找Gin的学习资料么?学习Gin框架,看它就欧了

学习 Go Gin 框架可以按照以下步骤进行: 理解基本概念: 确保你对 Go 语言有一定的了解,并理解 Web 框架的基本概念。Gin 是一个基于 Go 语言的轻量级 Web 框架,因此,你需要了解 HTTP 请求、路由处理、中间件等概念。 …

面试笔记——Redis(集群方案:主从复制、哨兵模式和分片集群)

主从复制 在 Redis 主从集群中,一个主节点(Master)负责处理客户端的读写请求,而多个从节点(Slave)则负责复制主节点的数据,并对外提供读取服务——解决高并发问题。 主节点(Master&…

最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作教程

原文链接:最新ChatGPT/GPT4科研应用与AI绘图及论文高效写作教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247598050&idx5&sn70fd3f5946d581ad9c1363295b130ef5&chksmfa823e05cdf5b713baf9cf1381bfb2455ad675a0b21e194bef8b76f35d6aa77…