当前位置: 首页 > news >正文

数据结构与算法基础-学习-10-线性表之栈的清理、销毁、压栈、弹栈

一、函数实现

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_Stack]$ make
gcc -Wall -O3 Log.c SqStack.c main.c -o TestSqStack[gbase@czg2 LinearTable_Stack]$ ./TestSqStack 
2023-2-14 9:53:20--Info--Init SqStack    : OK
2023-2-14 9:53:20--Info--Push SqStack    : OK
2023-2-14 9:53:20--Info--Push SqStack    : OK
2023-2-14 9:53:20--Info--Push SqStack    : OK
2023-2-14 9:53:20--Info--Push SqStack    : OK
2023-2-14 9:53:20--Info--Push SqStack    : OK
2023-2-14 9:53:20--Info--Push SqStack    : OK
2023-2-14 9:53:20--Warning--SqStack is Full, Data cannot be pushed
2023-2-14 9:53:20--Warning--SqStack is Full, Data cannot be pushed
2023-2-14 9:53:20--Debug--Judge SqStack  : Not Empty
2023-2-14 9:53:20--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-14 9:53:20--Debug--Judge SqStack  : Not Empty
2023-2-14 9:53:20--Info--Pop SqStack     : OK
2023-2-14 9:53:20--Debug--SqElemType Data:
StudentNum     : X666
StudentName    : Sun
StudentScore   : 105
2023-2-14 9:53:20--Debug--Judge SqStack  : Not Empty
2023-2-14 9:53:20--Info--Pop SqStack     : OK
2023-2-14 9:53:20--Debug--SqElemType Data:
StudentNum     : X666
StudentName    : Sun
StudentScore   : 104
2023-2-14 9:53:20--Debug--Judge SqStack  : Not Empty
2023-2-14 9:53:20--Info--Pop SqStack     : OK
2023-2-14 9:53:20--Debug--SqElemType Data:
StudentNum     : X666
StudentName    : Sun
StudentScore   : 103
2023-2-14 9:53:20--Debug--Judge SqStack  : Not Empty
2023-2-14 9:53:20--Info--Pop SqStack     : OK
2023-2-14 9:53:20--Debug--SqElemType Data:
StudentNum     : X666
StudentName    : Sun
StudentScore   : 102
2023-2-14 9:53:20--Debug--Judge SqStack  : Not Empty
2023-2-14 9:53:20--Info--Pop SqStack     : OK
2023-2-14 9:53:20--Debug--SqElemType Data:
StudentNum     : X666
StudentName    : Sun
StudentScore   : 101
2023-2-14 9:53:20--Debug--Judge SqStack  : Not Empty
2023-2-14 9:53:20--Info--Pop SqStack     : OK
2023-2-14 9:53:20--Debug--SqElemType Data:
StudentNum     : X666
StudentName    : Sun
StudentScore   : 100
2023-2-14 9:53:20--Debug--Judge SqStack  : Empty
2023-2-14 9:53:20--Warning--SqStack is Empty, Data cannot be poped
2023-2-14 9:53:20--Debug--Judge SqStack  : Empty
2023-2-14 9:53:20--Warning--SqStack is Empty, Data cannot be poped
2023-2-14 9:53:20--Debug--SqStack Data   :
SqStackLen     : 0
SqStackMaxSize : 6
2023-2-14 9:53:20--Info--Clear SqStack   : OK
2023-2-14 9:53:20--Info--Destroy SqStack : OK

相关文章:

数据结构与算法基础-学习-10-线性表之栈的清理、销毁、压栈、弹栈

一、函数实现1、ClearSqStack(1)用途清理栈的空间。只需要栈顶指针和栈底指针相等,就说明栈已经清空,后续新入栈的数据可以直接覆盖,不用实际清理数据,提升了清理效率。(2)源码Statu…...

Leetcode 每日一题 1234. 替换子串得到平衡字符串

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…...

【MYSQL中级篇】数据库数据查询学习

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 相关文章 文章名文章地址【MYSQL初级篇】入门…...

华为OD机试真题JAVA实现【火星文计算】真题+解题思路+代码(20222023)

🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出描述示例一输入输出说明解题思路核心知识点Code运行结果版...

Linux基础知识

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放&#xff0…...

Linux 游戏性能谁的 更优秀X.Org还是Wayland!

导读X.Org 和 Wayland 是目前 Linux 平台上的两大主流显示服务器,那么两者在 Linux 游戏性能上谁更优秀呢?国外科技媒体 Phoronix 在 Ubuntu 22.10 上对其进行了多款游戏的实测。评测在运行 GNOME 43.1 的 Ubuntu 22.10 上进行测试,在安装英伟…...

【数据结构】算法的复杂度分析:让你拥有未卜先知的能力

👑专栏内容:数据结构⛪个人主页:子夜的星的主页💕座右铭:日拱一卒,功不唐捐 文章目录一、前言二、时间复杂度1、定义2、大O的渐进表示法3、常见的时间复杂度三、空间复杂度1、定义2、常见的空间复杂度一、前…...

Linux根文件系统移植

目录 一、根文件系统 1.1根文件系统 1.2根文件系统内容 二、根文件系统移植 2.1BusyBox 2.2BusyBox的获取 2.3BusyBox的使用 2.4make menuconfig 2.5编译和安装 2.6修改根文件系统 一、根文件系统 1.1根文件系统 根文件系统是内核启动后挂载的第一个文件系统系统引…...

Three.js 无限平面快速教程【Plane】

Three.js 提供了 Plane 概念来表示在 3d 空间中无限延伸的二维表面。 这对于光标交互很有用,因此你可能需要了解如何设置此平面、将其可视化并根据需要进行调整。 推荐:使用 NSDT场景设计器 快速搭建 3D场景。 Three.js 的 Plane 文档很好而且准确&…...

在线预览PDF文件、图片,并且预览地址不显示文件或图片的真实路径。

实现在线预览PDF文件、图片,并且预览地址不显示文件或图片的真实路径。1、vue使用blob流在线预览PDF、图片(包括jpg、png等格式)。1、按钮的方法:2、方法详细:(此方法可以在发起请求时携带token&#xff0c…...

Allegro如何设置导入Subdrawing可自由选择目录操作指导

Allegro如何设置导入Subdrawing可自由选择目录操作指导 用Allgro做PCB设计的时候,导入Subdrawing是非常常用的功能,在导入Subdrawing的时候,通常需要把Subdrawing文件放在需要导入PCB的相同目录下,不能自由选择,如下图 但是Allegro是支持自由选择目录的,只需按照下方的步…...

SpirngMVC执行原理--自学版

DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心,用户发出请求,DispatcherServlet接收请求并拦截请求HandlerMapper为处理器映射。DispatcherServlet调用。HandlerMapping根据请求url查找HandlerHandlerExecution表示具体的Handl…...

获取savemodel的输入输出节点

saved_model_cli show --dir savemodels --all 结果: MetaGraphDef with tag-set: ‘serve’ contains the following SignatureDefs: signature_def[‘translation_signature’]: The given SavedModel SignatureDef contains the following input(s): inputs[‘i…...

《Learning to Reconstruct Botanical Trees from Single Images》学习从单幅图像重建植物树

读书报告下载https://download.csdn.net/download/weixin_43042683/87448211论文原文https://dl.acm.org/doi/10.1145/3478513.3480525论文视频https://www.bilibili.com/video/BV1cb4y127Vp/?fromseopage&vd_source5212838c127b01db69dcc8b2d27ca5171引言植物存在在室外与…...

vant 4 正式发布,支持暗黑主题,那么是如何实现的呢

2022年10月25日首发于掘金,现在同步到公众号。11. 前言大家好,我是若川。我倾力持续组织了一年多源码共读,感兴趣的可以加我微信 lxchuan12 参与。另外,想学源码,极力推荐关注我写的专栏《学习源码整体架构系列》&…...

MySQL的复制 二

复制是MySQL的一项功能,使服务器能够将更改从一个实例恢复到另一个实例 主服务器(master)将所有数据和结构更改记录到二进制日志中。二进制日志格式是基于语句的、基于行的和混合的。 从属服务器(slave)从主服务器请求…...

秒杀项目之秒杀商品展示及商品秒杀

目录前言一、登录方式调整二、生成秒杀订单2.1 绑定秒杀商品2.2 查看秒杀商品2.3 订单秒杀2.3.1 移除seata相关(方便测压)2.3.2 生成秒杀订单2.3.3 前端页面秒杀测试注意前言 博主博客用到的资源都会同步分享到资源包中 一、登录方式调整 第1步&#xf…...

教育行业需要什么样的数字产品?

数字化转型的浪潮已经席卷了各行各业,不仅出现在互联网、电商、建筑等行业,还应用在了教育行业。数字化的教育ERP软件能够在满足学校需求的基础上,帮助学校完善各类工作流程,提高工作效率。 对于一个拥有多个校区,上万…...

Spring MVC

一、Spring MVC介绍 a. Spring MVC是一个Web框架 b. Spring MVC是基于Servlet API构成的 MVC 是 Model View Controller 的缩写。 MVC 是⼀种思想,⽽ Spring MVC 是对 MVC 思想的具体实现。 学习Spring MVC目标: a.连接功能:将用户&#xff…...

类与对象(上)

类与对象(上) 1.面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 C是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...