数据结构与算法基础-学习-10-线性表之顺序栈的清理、销毁、压栈、弹栈
一、函数实现
顺序栈的其他函数实现,请看之前的博客链接《数据结构与算法基础-学习-09-线性表之栈的理解、初始化顺序栈、判断顺序栈空、获取顺序栈长度的实现》。
1、ClearSqStack
(1)用途
清理栈的空间。只需要栈顶指针和栈底指针相等,就说明栈已经清空,后续新入栈的数据可以直接覆盖,不用实际清理数据,提升了清理效率。
(2)源码
Status ClearSqStack(SqStack* S)
{JudgeAllNullPointer(S);S->TopPointer = S->BasePointer;Log("Clear SqStack : OK\n",Info);return SuccessFlag;
}(3)参数
参数名 | 说明 |
S | 需要清理的SqStack*类型顺序栈。 |
2、DestroyStack
(1)说明
销毁栈。释放申请的资源。
(2)源码
Status DestroyStack(SqStack* S)
{JudgeAllNullPointer(S);free(S->BasePointer);S->TopPointer = NULL;S->BasePointer = NULL;S->SqStackMaxSize = 0;Log("Destroy SqStack : OK\n",Info);return SuccessFlag;
}(3)参数
参数名 | 说明 |
S | 需要销毁的SqStack*类型顺序栈。 |
3、PushSqStack
(1)说明
压栈。判断栈是否已满,如果已满报错,反之将数据压入栈顶即可。
(2)源码
Status PushSqStack(SqStack* S, SqElemType SE)
{JudgeAllNullPointer(S);//判断是否栈满if(GetSqStackLen(S) >= S->SqStackMaxSize){Log("SqStack is Full, Data cannot be pushed\n",Warning);return FailFlag;}//相同结构体之间,可以直接赋值。*(S->TopPointer) = SE;//CopySqElemType(S->TopPointer, &SE);//printf("%p, %p\n",S->TopPointer->StudentNum, (&SE)->StudentNum);S->TopPointer++;Log("Push SqStack : OK\n",Info);return SuccessFlag;
}(3)参数
参数名 | 说明 |
S | 需要压栈的SqStack*类型顺序栈。 |
SE | 需要压入栈的SqElemType类型数据。 |
4、PopSqStack
(1)说明
弹栈。判断栈是否已空,如果是,就抛出错误。如果不是,就下移栈顶指针,将数据赋值给SE,作为传出参数。
(2)源码
Status PopSqStack(SqStack* S, SqElemType* SE)
{JudgeAllNullPointer(S);JudgeAllNullPointer(SE);if(JudgeSqStackIsEmpty(S) == SuccessFlag){Log("SqStack is Empty, Data cannot be poped\n",Warning);return FailFlag;}S->TopPointer--;*SE = *(S->TopPointer);//CopySqElemType(SE,S->TopPointer);//printf("%p, %p\n",S->TopPointer->StudentNum, SE->StudentNum);Log("Pop SqStack : OK\n",Info);return SuccessFlag;
}(3)参数
参数名 | 说明 |
S | 需要初始化的SqStack*类型顺序栈。 |
SE | 需要弹出栈的SqElemType*类型数据。 |
二、虚机测试
[gbase@czg2 LinearTable_SqStack]$ make
gcc -Wall -O3 ../Log/Log.c SqStack.c main.c -o TestSqStack -I ../Log/[gbase@czg2 LinearTable_SqStack]$ ./TestSqStack
2023-2--Info--Init SqStack : OK
2023-2--Info--Push SqStack : OK
2023-2--Info--Push SqStack : OK
2023-2--Info--Push SqStack : OK
2023-2--Info--Push SqStack : OK
2023-2--Info--Push SqStack : OK
2023-2--Info--Push SqStack : OK
2023-2--Warning--SqStack is Full, Data cannot be pushed
2023-2--Warning--SqStack is Full, Data cannot be pushed
2023-2--Debug--Judge SqStack : Not Empty
2023-2--Debug--SqStack Data :
StudentNum : X666
StudentName : Sun
StudentScore : 100
+++++++++++++++
StudentNum : X666
StudentName : Sun
StudentScore : 101
+++++++++++++++
StudentNum : X666
StudentName : Sun
StudentScore : 102
+++++++++++++++
StudentNum : X666
StudentName : Sun
StudentScore : 103
+++++++++++++++
StudentNum : X666
StudentName : Sun
StudentScore : 104
+++++++++++++++
StudentNum : X666
StudentName : Sun
StudentScore : 105
+++++++++++++++
SqStackLen : 6
SqStackMaxSize : 6
2023-2--Debug--Judge SqStack : Not Empty
2023-2--Info--Pop SqStack : OK
2023-2--Debug--SqElemType Data:
StudentNum : X666
StudentName : Sun
StudentScore : 105
2023-2--Debug--Judge SqStack : Not Empty
2023-2--Info--Pop SqStack : OK
2023-2--Debug--SqElemType Data:
StudentNum : X666
StudentName : Sun
StudentScore : 104
2023-2--Debug--Judge SqStack : Not Empty
2023-2--Info--Pop SqStack : OK
2023-2--Debug--SqElemType Data:
StudentNum : X666
StudentName : Sun
StudentScore : 103
2023-2--Debug--Judge SqStack : Not Empty
2023-2--Info--Pop SqStack : OK
2023-2--Debug--SqElemType Data:
StudentNum : X666
StudentName : Sun
StudentScore : 102
2023-2--Debug--Judge SqStack : Not Empty
2023-2--Info--Pop SqStack : OK
2023-2--Debug--SqElemType Data:
StudentNum : X666
StudentName : Sun
StudentScore : 101
2023-2--Debug--Judge SqStack : Not Empty
2023-2--Info--Pop SqStack : OK
2023-2--Debug--SqElemType Data:
StudentNum : X666
StudentName : Sun
StudentScore : 100
2023-2--Debug--Judge SqStack : Empty
2023-2--Warning--SqStack is Empty, Data cannot be poped
2023-2--Debug--Judge SqStack : Empty
2023-2--Warning--SqStack is Empty, Data cannot be poped
2023-2--Debug--SqStack Data :
SqStackLen : 0
SqStackMaxSize : 6
2023-2--Info--Clear SqStack : OK
2023-2--Info--Destroy SqStack : OK
相关文章:
数据结构与算法基础-学习-10-线性表之顺序栈的清理、销毁、压栈、弹栈
一、函数实现顺序栈的其他函数实现,请看之前的博客链接《数据结构与算法基础-学习-09-线性表之栈的理解、初始化顺序栈、判断顺序栈空、获取顺序栈长度的实现》。1、ClearSqStack(1)用途清理栈的空间。只需要栈顶指针和栈底指针相等ÿ…...
Hazel游戏引擎(005)
本人菜鸟,文中若有代码、术语等错误,欢迎指正 我写的项目地址:https://github.com/liujianjie/GameEngineLightWeight(中文的注释适合中国人的你) 文章目录前言关键操作代码文件关键代码代码流程代码文件关键代码exter…...
牛客网Python篇数据分析习题(四)
1.现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔): Nowcoder_ID:用户ID Level:等级 Achievement_value:成就值 Num_of_exercise&a…...
盲盒如何创业?
所谓的“盲盒”,受众群体大部分是那些爱碰运气的人,顾客买的是那种在打开盲盒时一刹那的惊喜感和神秘感,在打开盲盒之前,谁也不知道自己会得到什么,这也是为什么消费者更愿意购买的原因。网上的盲盒,主要是…...
第1集丨Java中面向对象相关概念汇总
目录一、基本概念1.1 类1.2 属性1.3 方法1.4 静态1.5 包1.6 import二、高级概念2.1 构造方法2.2 继承2.3 super & this2.4 多态2.5 方法重载2.6 方法重写2.7 访问权限2.8 内部类2.9 final2.10 抽象2.11 接口2.12 匿名类面向对象的编程思想力图使计算机语言中对事物的描述与…...
高性能(二)
三、读写分离和分库分表 1.读写分离 1.1 概述 将数据库的读写操作分散到不同的数据库节点上 通常一主多从一台主数据库负责写,多台从数据库负责读。 主库和从库之间会进行数据同步,以保证从库中数据的准确性。 1.2 问题及解决 1.2.1 问题 主从同…...
Allegro如何实现同一个屏幕界面分屏显示操作指导
Allegro如何实现同一个屏幕界面分屏显示操作指导 在做PCB设计的时候,会需要分屏显示,比如一边是放大的视图,另外一边是缩小的视图,Allegro支持同一个屏幕界面下进行分屏显示,如下图 而且会实时同步起来 如何分屏,具体操作如下 点击View...
前后端一些下载与配置(第二篇 第10天过后)nuxt banner redis 短信服务
NUXT 应该是不用怎么装? 有现成的 axios 还需要在npm吗 好像已经有现成的了 banner banner 笔记汇总P396 Redis Linux安装redis tar -xzvf redis-6.2.6.tar.gz cd redis-6.2.6 照着他做 然后 cd /usr/local/redis/bin ./redis-server /usr/local/redis…...
OSG三维渲染引擎编程学习之四十八:“第五章:OSG场景渲染” 之 “5.6 多重纹理映射”
目录 第五章 OSG场景渲染 5.6 多重纹理映射 5.6.1 多重纹理映射介绍 5.6.2 多重纹理映射示例...
对Node.js 的理解?优缺点?应用场景?
一、是什么 Node.js 是一个开源与跨平台的 JavaScript 运行时环境 在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核),利用事件驱动、非阻塞和异步输入输出模型等技术提高性能 可以理解为 Node.js 就是一个服务器端的、非阻塞式I/…...
Bean的生命周期
所谓的生命周期指的是一个对象从诞生到销毁的整个生命过程,我们把这个过程就叫做一个对象的生命周期~~ Bean的生命周期分为以下五大部分: 实例化(为 Bean 分配内存空间) 设置属性(Bean对象注入/装配) 初…...
Python学习-----函数2.0(函数对象,名称空间,作用域-->全局变量与局部变量)
目录 前言: 1.函数对象 (1)函数对象的引用 (2)函数可以放到序列里面 (3)函数可以作为参数 , 传递给另一个函数 2.名称空间 3.作用域 (1)作用域的理解 …...
Java中Json字符串和Java对象的互转
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。诞生于 2002 年。易于人阅读和编写。同时也易于机器解析和生成。JSON 是目前主流的前后端数据传输方式。 JSON 采用完全独立于语言的文本格式,但是也使用了类似于 C 语言家族的…...
代码随想录NO42 | 动态规划_Leetcode70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数
动态规划_Leetcode70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数70. 爬楼梯 (进阶) 在原题基础上,改为:一步一个台阶,两个台阶,三个台阶,…,直到 m个台阶…...
【C++从入门到放弃】初识C++(基础知识入门详解)
🧑💻作者: 情话0.0 📝专栏:《C从入门到放弃》 👦个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢! C基础…...
企业工程项目管理系统源码+spring cloud 系统管理+java 系统设置+二次开发
工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…...
【GPLT 三阶题目集】L3-016 二叉搜索树的结构
二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分…...
核心交换机安全多业务高性能万兆交换机
RG-S5750-24SFP/12GT交换机是锐捷网络推出的融合了高性能、高安全、多业务的新一代三层交换机。RG-S5750-24SFP/12GT 交换机能够提供灵活的介质接口,满足网络建设中不同介质的连接需要。全千兆的端口形态,加上可扩展的高密度万兆端口,提供1&a…...
Android APK 签名打包原理分析(三)【静默安装的实现方案】
背景 小编目前从事的系统定制类工作,有客户提出了,需要后台“静默安装”他们的app,也就是悄无声息的安装,而且特别强调,不可以跳出任何安装引导页面,他们的app下载完成之后,后台调用公开的android install代码,系统就后台完成安装,安装完成之后,重新打开应用就可以。…...
mulesoft MCIA 破釜沉舟备考 2023.02.14.05
mulesoft MCIA 破釜沉舟备考 2023.02.14.05 1. Refer to the exhibit.2. A Kubernetes controller automatically adds another pod replica to the resource pool in response to increased application load.3. An XA transaction Is being configured that involves a JMS c…...
Pixelorama扩展深度解析:3种自动化精灵图切割方案对比
Pixelorama扩展深度解析:3种自动化精灵图切割方案对比 【免费下载链接】Pixelorama A free & open-source 2D sprite editor, made with the Godot Engine! Available on Windows, Linux, macOS and the Web! 项目地址: https://gitcode.com/gh_mirrors/pi/Pi…...
基于STM32CubeMX的AD9850驱动开发与频率合成实战
1. 从零开始认识AD9850与STM32CubeMX 第一次接触AD9850这个芯片时,我完全被它的性能震撼到了——这个比指甲盖还小的芯片,居然能产生0.0291Hz分辨率的信号!当时我正在做一个射频测试项目,需要生成精确的正弦波信号。市面上常见的…...
OpenMemories-Tweak完整指南:如何安全解锁索尼相机的隐藏功能
OpenMemories-Tweak完整指南:如何安全解锁索尼相机的隐藏功能 【免费下载链接】OpenMemories-Tweak Unlock your Sony cameras settings 项目地址: https://gitcode.com/gh_mirrors/op/OpenMemories-Tweak OpenMemories-Tweak是一款专为索尼相机设计的开源解…...
NaViL-9B效果展示:电商主图自动提取卖点文案+竞品对比分析
NaViL-9B效果展示:电商主图自动提取卖点文案竞品对比分析 1. 多模态大模型惊艳登场 想象一下,当你上传一张商品图片,AI不仅能准确识别图片内容,还能自动生成吸引人的卖点文案——这就是NaViL-9B带来的革命性体验。作为原生多模态…...
告别‘unbox’失败:Truffle项目初始化保姆级教程,从MetaCoin到自定义合约
告别‘unbox’失败:Truffle项目初始化保姆级教程,从MetaCoin到自定义合约 当你第一次接触Truffle框架时,那种兴奋感可能很快就会被truffle unbox metacoin命令失败的红字提示浇灭。别担心,这几乎是每个区块链开发者的必经之路。本…...
5步构建智能医疗预约系统:91160-cli全流程实战指南
5步构建智能医疗预约系统:91160-cli全流程实战指南 【免费下载链接】91160-cli 健康160全自动挂号脚本 项目地址: https://gitcode.com/gh_mirrors/91/91160-cli 医疗资源紧张导致的挂号难题,让无数患者在凌晨守候却依然一号难求。如何突破人工抢…...
4步彻底清除Edge浏览器:从系统底层解决Windows默认浏览器卸载难题
4步彻底清除Edge浏览器:从系统底层解决Windows默认浏览器卸载难题 【免费下载链接】EdgeRemover PowerShell script to remove Microsoft Edge in a non-forceful manner. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemover 一、用户痛点场景&#x…...
QDKTAI实战面试题50问之41-50
一、逐题详细解析(41-50题)第41题:如何设计一个有效的AI内容审核系统?1. 考察重点对大模型“生成式而非判别式”核心特性的理解识别AI审核场景中的关键冲突点(长文本处理、语气/风格干扰)针对性解决方案的设…...
探索黑苹果安装实战:从零到完美的完全指南
探索黑苹果安装实战:从零到完美的完全指南 【免费下载链接】Hackintosh 国光的黑苹果安装教程:手把手教你配置 OpenCore 项目地址: https://gitcode.com/gh_mirrors/hac/Hackintosh 破解三大核心技术痛点 直面固件层兼容性障碍 当PC尝试运行mac…...
如何高效使用英雄联盟智能助手:5分钟快速上手指南
如何高效使用英雄联盟智能助手:5分钟快速上手指南 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否经常因为错过…...
