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

数据结构-栈-004

1链栈

1.1栈结点结构体定义

/*定义一个数据结构*/
typedef struct student
{char name[32];char sex;int age;
}DATA_TYPE;
/*定义一个栈结点*/
typedef struct stack_node
{DATA_TYPE data;//数据域struct stack_node *pnext;//指针域
}STACK_NODE;

1.2栈顶结点结构体定义

/*定义一个栈顶结点*/
typedef struct stack_top
{STACK_NODE *ptop;//栈顶结点指针域int clen;//栈顶结点数据域-栈结点数
}STACK_TOP;

1.3创建栈顶结点

/*==========创建栈顶结点(创建一个空栈)==========*/
STACK_TOP *create_stack_top(void)
{STACK_TOP *stack_top=NULL;/*申请一个栈顶结点空间*/stack_top=malloc(sizeof(STACK_TOP));if(NULL==stack_top){perror("fail to malloc");return NULL;}/*栈顶结点成员初始化*/stack_top->ptop=NULL;stack_top->clen=0;return stack_top;
}

1.4创建栈结点

/*==========创建一个新的栈结点==========*/
STACK_NODE *create_stack_new_node(DATA_TYPE data)
{STACK_NODE *stack_node=NULL;/*申请一个栈结点空间*/stack_node=malloc(sizeof(STACK_NODE));if(NULL==stack_node){perror("fail to malloc");return NULL;}/*栈结点成员初始化*/stack_node->data=data;stack_node->pnext=NULL;//思考1:这里直接初始化为NULL,还是继承栈顶的ptop?return stack_node;
}

1.5判断非空栈

/*==========判断是否为空栈==========*/
int is_empty_stack(STACK_TOP *pstack)
{return NULL==pstack->ptop;
}

1.6入栈

/*==========入栈-头插法==========*/
int push_stack(STACK_TOP *pstack,STACK_NODE *pnode)
{if(is_empty_stack(pstack)){pstack->ptop=pnode;//更新栈顶指针域}else{pnode->pnext=pstack->ptop;//初始化新的栈结点指针域pstack->ptop=pnode;//更新栈顶指针域}pstack->clen++;//更新栈顶结点数据域return 0;
}

1.7出栈

1.8遍历栈

/*==========遍历栈==========*/
void stack_for_each(STACK_TOP *pstack,void (*pfun)(STACK_NODE *))
{STACK_NODE *ptmp=NULL;ptmp=pstack->ptop;//初始化栈结点类型的中间指针变量为栈首while(1){if(NULL==ptmp){break;}pfun(ptmp);ptmp=ptmp->pnext;}
}/*==========遍历方法==========*/
void show_data(STACK_NODE *pnode)
{printf("%-10s\t%-10c\t%-10d\n",pnode->data.name,pnode->data.sex,pnode->data.age);
}

相关文章:

数据结构-栈-004

1链栈 1.1栈结点结构体定义 /*定义一个数据结构*/ typedef struct student {char name[32];char sex;int age; }DATA_TYPE;/*定义一个栈结点*/ typedef struct stack_node {DATA_TYPE data;//数据域struct stack_node *pnext;//指针域 }STACK_NODE;1.2栈顶结点结构体定义 /*…...

(第76天)XTTS 升级:11GR2 到 19C

参考文档: 11G - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 1389592.1)V4 使用跨平台增量备份减少可传输表空间的停机时间 (Doc ID 2940565.1)前言 XTTS(Cross Platform Transportable Tablespaces,跨平台迁移表空间)是…...

修改网站源码,给电子商城的商品添加图片时商品id为0的原因

修改网站源码,给电子商城的商品添加图片时商品id为0的原因。花了几个小时查找原因。后来,由于PictureControl.class.php是复制CourseControl.class.php而来,于是对比了这两个文件,在CourseControl.class.php找到了不一样的关键几条…...

ffmpeg开发异步AI推理Filter

ffmpeg开发异步AI推理Filter 1.环境搭建、推理服务及客户端SDK2.编译原版ffmpeg3.测试原版ffmpeg的filter功能4.准备异步推理filter5.修改点6.重新编译ffmpeg7.测试异步推理filter本文旨在阐述如何开发一个FFmpeg Filter,该模块利用gRPC异步通信机制调用远程视频处理服务。这一…...

python与excel第七节 拆分工作簿

一个工作簿中多个工作表拆分为多个工作簿 假设一个excle工作簿中有多个工作表,现在需要将每个工作表拆分为单独的工作簿。 例子: import xlwings as xw# 设置生成文件的路径path D:\\TEST\\dataIn# 源文件的路径workbook_name D:\\TEST\\dataIn\\产…...

JS08-DOM节点完整版

DOM节点 查找节点 父节点 <div class="father"><div class="son">儿子</div></div><script>let son = document.querySelector(.son)console.log(son.parentNode);son.parentNode.style.display = none</script>通过…...

【python】python3基础

文章目录 一、安装pycharm 二、输入输出输出 print()文件输出&#xff1a;格式化输出&#xff1a; 输入input注释 三、编码规范四、变量保留字变量 五、数据类型数字类型整数浮点数复数 字符串类型布尔类型序列结构序列属性列表list &#xff0c;有序多维列表列表推导式 元组tu…...

计算机三级网络技术 选择+大题234笔记

上周停去准备计算机三级的考试啦&#xff0c;在考场上看到题目就知道这次稳了&#xff01;只有一周的时间&#xff0c;背熟笔记&#xff0c;也能稳稳考过计算机三级网络技术&#xff01;...

智能合约 之 ERC-721

ERC-721&#xff08;Non-Fungible Token&#xff0c;NFT&#xff09;标准 ERC-721是以太坊区块链上的一种代币标准&#xff0c;它定义了一种非同质化代币&#xff08;Non-Fungible Token&#xff0c;NFT&#xff09;的标准。NFT是一种加密数字资产&#xff0c;每个代币都具有独…...

== 和 equals 的区别是什么?

和 equals() 在 Java 中都是用于比较两个对象&#xff0c;但它们之间存在显著的差异&#xff1a; 比较的内容&#xff1a; &#xff1a;这是 Java 中的基本比较运算符&#xff0c;对于基本数据类型&#xff08;如 int, char, double 等&#xff09;&#xff0c;它比较的是值&a…...

VUE:内置组件<Teleport>妙用

一、<Teleport>简介 <Teleport>能将其插槽内容渲染到 DOM 中的另一个位置。也就是移动这个dom。 我们可以这么使用它: 将class为boxB的盒子移动到class为boxA的容器中。 <Teleport to".boxA"><div class"boxB"></div> &…...

ruoyi-nbcio-plus后端里mapstruct-plus和lombok的使用

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…...

企业如何选择一个开源「好」项目?

开源 三句半​​​​​​​ 需求明确是关键 风险考量要周全 开源虽好不白捡 别忘合规&#xff01; 显然&#xff0c;开源已成为一股不可阻挡的洪流&#xff0c;企业拥抱开源&#xff0c;积极参与开源项目不仅是响应技术潮流的必然选择&#xff0c;更是实现自身技术创新、市场拓…...

c++算法学习笔记 (14) 并查集

1.合并集合 一共有 n 个数&#xff0c;编号是 1∼n&#xff0c;最开始每个数各自在一个集合中。 现在要进行 m 个操作&#xff0c;操作共有两种&#xff1a; M a b&#xff0c;将编号为 a 和 b 的两个数所在的集合合并&#xff0c;如果两个数已经在同一个集合中&#xff0c;…...

import * as的使用

import * as 是将一个模块的所有导出内容作为一个命名空间对象导入到当前模块中&#xff0c;其中 * 表示导入该模块中的所有导出内容&#xff0c;而 as 则用于指定导入的命名空间对象的名称。 例如&#xff1a;在 formatter 文件中有两个方法导出 const a () > {console.…...

微服务(基础篇-003-Nacos)

目录 Nacos注册中心&#xff08;1&#xff09; 认识和安装Nacos&#xff08;1.1&#xff09; Nacos快速入门&#xff08;1.2&#xff09; 服务注册到Nacos(1.2.1) Nacos服务分级存储模型&#xff08;1.3&#xff09; 配置集群&#xff08;1.3.1&#xff09; 根据集群修改…...

java数据结构与算法刷题-----LeetCode215. 数组中的第K个最大元素

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 解题思路&#xff1a;时间复杂度O( n n n)&#xff0c;空间复杂度…...

Springboot 整合 Knife4j (API文档生成工具)

目录 一、Knife4j 介绍 二、Springboot 整合 Knife4j 1、pom.xml中引入依赖包 2、在application.yml 中添加 Knife4j 相关配置 3、打开 Knife4j UI界面 三、关于Knife4j框架中常用的注解 1、Api 2、ApiOperation ​3、ApiOperationSupport(order X) ​4、ApiImplici…...

C语言---------strlen的使用和模拟实现

字符串是以‘\0’作为结束标志&#xff0c;strlen函数的返回值是‘\0’前面的字符串的个数&#xff08;不包括‘\0’&#xff09; 注意 1&#xff0c;参数指向的字符串必须以‘\0’结束 2&#xff0c;函数的返回值必须以size_t,是无符号的 使用代码 ​ #include<stdio.…...

【MATLAB源码-第168期】基于matlab的布谷鸟优化算法(COA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 布谷鸟优化算法&#xff08;Cuckoo Optimization Algorithm, COA&#xff09;是一种启发式搜索算法&#xff0c;其设计灵感源自于布谷鸟的独特生活习性&#xff0c;尤其是它们的寄生繁殖行为。该算法通过模拟布谷鸟在自然界中…...

解决游戏控制器兼容性难题:ViGEmBus驱动全攻略

解决游戏控制器兼容性难题&#xff1a;ViGEmBus驱动全攻略 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 问题诊断篇&#xff1a;游戏控制器兼容性痛点分析…...

OFA图像描述模型商业应用:自动生成产品图片描述,提升电商效率

OFA图像描述模型商业应用&#xff1a;自动生成产品图片描述&#xff0c;提升电商效率 1. 电商图片描述的痛点与解决方案 在电商运营中&#xff0c;产品图片描述是一个既重要又繁琐的工作。传统方式需要人工撰写每张产品图片的说明文字&#xff0c;这不仅效率低下&#xff0c;…...

当测试脚本杀人:军工AI系统的质量失控实录

对于软件测试从业者而言&#xff0c;我们早已习惯了与代码缺陷、性能瓶颈和逻辑错误作斗争。我们构建自动化脚本&#xff0c;设计测试用例&#xff0c;守护着软件世界的秩序与安全。然而&#xff0c;当测试的对象从商业应用转向决定生死的军工AI系统时&#xff0c;质量保障的维…...

SecGPT-14B模型压力测试:验证OpenClaw高并发安全任务的稳定性

SecGPT-14B模型压力测试&#xff1a;验证OpenClaw高并发安全任务的稳定性 1. 测试背景与目标 最近在探索如何将OpenClaw与安全大模型结合&#xff0c;构建一个自动化安全分析助手。SecGPT-14B作为一款专注于网络安全的大模型&#xff0c;理论上可以处理端口扫描、日志分析等任…...

RexUniNLU零样本实战:智能家居指令解析,5分钟快速上手

RexUniNLU零样本实战&#xff1a;智能家居指令解析&#xff0c;5分钟快速上手 1. 为什么选择RexUniNLU处理智能家居指令&#xff1f; 1.1 智能家居场景的特殊挑战 智能家居领域面临两大核心难题&#xff1a;指令多样性和用户表达随意性。同一操作可能有数十种表达方式&#…...

MyLD2410:面向LD2410毫米波传感器的Arduino/ESP32嵌入式C++库

1. 项目概述MyLD2410 是一款专为 HLK-LD2410B 和 HLK-LD2410C 毫米波存在检测传感器设计的嵌入式 C 库&#xff0c;面向 Arduino 与 ESP32 平台构建。该库完全自主开发&#xff0c;不依赖任何第三方驱动或中间件&#xff0c;具备高度可移植性——可在所有支持 HardwareSerial 的…...

Loop:5分钟打造优雅Mac窗口管理,告别鼠标拖拽的烦恼

Loop&#xff1a;5分钟打造优雅Mac窗口管理&#xff0c;告别鼠标拖拽的烦恼 【免费下载链接】Loop Window management made elegant. 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 你是否也经历过这样的场景&#xff1a;正在专注写代码&#xff0c;却要频繁拖…...

终端智能编程助手Claude Code:让自然语言驱动你的开发工作流

终端智能编程助手Claude Code&#xff1a;让自然语言驱动你的开发工作流 【免费下载链接】claude-code Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining c…...

OBS模糊插件终极指南:如何用obs-composite-blur提升直播画面专业度

OBS模糊插件终极指南&#xff1a;如何用obs-composite-blur提升直播画面专业度 【免费下载链接】obs-composite-blur A comprehensive blur plugin for OBS that provides several different blur algorithms, and proper compositing. 项目地址: https://gitcode.com/gh_mir…...

Source Sans 3:现代UI设计的无衬线字体解决方案

Source Sans 3&#xff1a;现代UI设计的无衬线字体解决方案 【免费下载链接】source-sans Sans serif font family for user interface environments 项目地址: https://gitcode.com/gh_mirrors/so/source-sans 30秒快速了解 全字重覆盖&#xff1a;从ExtraLight到Blac…...