4.4 栈实现及其应用

news2024/10/5 22:22:49

目录

 顺序栈

创建栈:

清空栈:

判断栈是否空 :

进栈 :

出栈 :

取栈顶元素:


栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈)

允许进行操作的一端称为“栈顶”

另一固定端称为“栈底”

当栈中没有元素时称为“空栈”。特点 :后进先出(LIFO)。

 顺序栈

 它是顺序表的一种,具有顺序表同样的存储结构,由数组定义,配合用数组下标表示的栈顶指针top(相对指针)完成各种操作。

  typedef  int  data_t ; /*定义栈中数据元素的数据类型*/

typedef struct {

            data_t  *data ;     /*用指针指向栈的存储空间*/

            int  maxlen;    /*当前栈的最大元素个数*/

            int  top ;     /*指示栈顶位置(数组下标)的变量*/

  } sqstack;         /*顺序栈类型定义*/ 

创建栈:

sqstack *stack_create (int len) {

sqstack *ss; ss = (seqstack *)malloc(sizeof(sqstack));

ss->data = (data_t *)malloc(sizeof(data_t) * len);

ss->top = -1;

ss->maxlen = len;

     return ss;

}

清空栈:

stack _clear(sqstack  *s) {

     s-> top = -1 ;

}

判断栈是否空 :

int  stack_empty (sqstack  *s) {

    return   (s->top ==  -1  ?  1 : 0);

}

进栈 :

void  stack_push (sqstack  *s ,  data_t  x) {

    if (s->top = = N - 1){

         printf ( “overflow !\n”) ;

           return  ;

    }     else  {

        s->top ++  ;

        s->data[s->top] = x ;

     }      return  ;

}

出栈 :

datatype  stack_pop(sqstack *s) {

 s->top--;

    return  (s->data[s->top+1]);

}

     取栈顶元素:

datatype  get_top(sqstack  *s) {

      return (s->data[s->top]);

}

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

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

相关文章

Robbin负载均衡详解及实践---SpringCloud组件(三)

Robbin负载均衡详解及实践 一 为什么使用Robbin?二 Robbin概念三 负载均衡实践1.启动eureka客户端2.启动多个provider服务,注册到eureka3.在consumer端配置负载均衡参数 四 Robbin源码剖析 一 为什么使用Robbin? 在Eureka详解及实践—Spring…

SAS初识

1、SAS常用工作窗口 “结果”(Result)窗口——管理SAS程序的输出结果; “日志”(Log)窗口——记录程序的运行情况; “SAS资源管理器”(Explore)窗口; “输出”&#xff0…

详解vue中的Object.defineProperty

如果想要age遍历的话 就设置属性 打印出来 发现有可以枚举的属性age 参考课程: 011_尚硅谷Vue技术_Object.defineProperty_哔哩哔哩_bilibili // 1.Vue中的数据代理: // 通过Vm对象来代理data对象中属性的操作(读/写) // 2…

STL容器 —— list 了解、接口使用,以及模拟实现list(部分常用接口)

注意 : 以下所有文档都来源此网站 : http://cplusplus.com/ 一、vector的介绍及使用 list文档的介绍:https://cplusplus.com/reference/list/list/ 1. vector 的介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&…

python自动化测试工具selenium使用指南 ,绝对能帮到你

目录 概述 pythonselenium环境安装 使用selenium启动浏览器 selenium页面加载等待和检测 使用time.sleep()等待 使用implicitly_wait设置最长等待时间 使用WebDriverWait设置等待条件 检测document是否加载完成 selenium元素定位和读取 查找元素 dom元素交互 查找元…

地址族和数据序列

IP地址 为使计算机连接到网络并收发数据,必需向其分配IP地址。 IP地址分为两类。 IPv4 (Internet Protocol version 4)4字节地址族 IPv6 (Internet Protocol version 6)16字节地址族 IPv4与IPv6的差别主要是表示IP地址所用的字节数,目前通用的地址族为IPv4。 IPv6是为了应对20…

全面接入!ChatGPT杀进15个商业应用,让AI替你打工

ChatGPT API开放60多天,世界已经不是两个月前的样子了。 微软联合创始人比尔盖茨称GPT是“40多年来最革命性的技术进步”,英伟达创始人黄仁勋高呼:“我们正处于AI的iPhone时刻”,阿里董事会主席兼CEO张勇也说:“所有行…

经验总结:(Git 版本控制工具快速入门)

Git学习笔记 版本控制(版本迭代) 什么是版本控制 版本迭代,开发过程中,对项目各个阶段的版本的控制。 在开发过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本。 多人开发…

ADV7391BCPZ-ASEMI代理亚德诺ADV7391BCPZ原厂芯片

编辑-Z ADV7391BCPZ参数描述: 型号:ADV7391BCPZ VDD:1.8V VAA:3.3V 全驱动输出电流:34.6 mA 低驱动输出电流:4.3 mA 输出电容:10 pF 模拟输出延迟:6 ns DAC模拟输出倾斜&am…

x509证书-crl证书吊销

标准 CRL fields -- 版本、时间、证书序列号和扩展名 -- 都是在4.1节的ASN.1中定义的 -- AlgorithmIdentifier 在第 4.1.1.2 节中定义 以下各项描述了 X.509 v2 CRL 在 Internet PKI 中的使用。 关于签名值和验证 signatureValue 字段包含根据 ASN.1 DER 编码的 tbsCertList 计…

13-Vue技术栈之路由的使用

目录 1、路由相关理解1.1 vue-router 的理解1.2 对 SPA 应用的理解1.3 路由的理解1.4 路由分类 2、路由的基本使用2.1 实现效果:2.2 实现思路:2.3 实现步骤:2.4 具体代码2.5 几个注意点 3、多级路由(嵌套路由)4、路由的…

中科院学术专用版GPT Academic项目实现

【写在最前】要完成GPT 学术优化 (GPT Academic)这个项目需要一些值得注意的地方: chatGPT账户有余额且未过期!!!有代理工具(类似Clash) 1、代码克隆 https://github.com/binary-husky/gpt_academic 根据…

Java后端调取微信小程序接口,创建微信小程序直播间

前提条件: 1.注册微信小程序 2.获取appId和secret秘钥 3.小程序具备直播权限 小程序直播开发文档网址 目录 1.创建和修改直播间 2.删除直播间 3.获取直播间分享二维码 1.创建和修改直播间 两个功能一起写,区别在于,修改的时候需要多一…

【数字化转型-05】数字化转型中战略驱动的利器——平衡计分卡

今年的4月19日, 华为第20届全球分析师大会上,华为孟晚舟在大会上发表了“初心如磐,奋楫笃行,共赢数字化未来”的主题演讲,其中分享了对数字化转型的三个核心洞见,首先,战略驱动是根本&#xff0…

Mojo:比 Python 快 35000 倍的 AI 编程语言

Mojo:比 Python 快 35000 倍的 AI 编程语言 Mojo是一门刚刚发布的面向 AI 开发人员的编程语言。 Mojo 被设计为 Python 的超集,所以如果你已经掌握了 Python,学习 Mojo 会很容易。关键是 Mojo 将 Python 的易用性与 C 语言的性能相结合&am…

AIGC—— 内容生产力革命的起点

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.AIGC 1.什么是AIGC? 2.AIGC有哪些优势与挑战 (1&#xff0…

51单片机(十)DS1302实时时钟

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要…

Solon 框架,单月下载量突破100万了!!!

Solon 框架,单月下载量突破100万了。感谢开源的力量和社区的支持,我们同喜同荣!!!目前,作为新成员加入了“可信开源共同体”,也积极参与中科院的“开源之夏”计划,也备受某军工服务商…

【C++入门】你知道C++为什么会有内联函数吗?

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

深度优先遍历和广度优先遍历

深度优先遍历和广度优先遍历 文章目录 深度优先遍历和广度优先遍历图图的实现遍历方式深度优先遍历基本思想广度优先遍历基本思想 完整代码 图 介绍:用于表示多对多的关系 图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称…