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

【数据结构】:栈的实现

在这里插入图片描述

1 栈

1.1栈的概念及结构

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则
压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶
出栈:栈的删除操作叫做出栈。出数据也在栈顶
在这里插入图片描述
在这里插入图片描述

1.2栈的实现

栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的
代价比较小
在这里插入图片描述
在这里插入图片描述
全部代码如下 特别注意 栈的特征是后进先出

#include"Stack.h"
void STInit(ST* ps)
{assert(ps);ps->a = NULL;ps->capacity = 0;ps->top = 0;
}
void STDestroy(ST* ps)
{assert(ps);free(ps->a);ps->a = NULL;ps->top = 0;ps->capacity = 0;
}
void STPush(ST* ps, SLDataType x)
{assert(ps);if (ps->top == ps->capacity){int NewCapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;SLDataType* tmp = (SLDataType*)realloc(ps->a, sizeof(SLDataType) * NewCapacity);if (tmp == NULL){perror("realloc fail");exit(-1);}ps->a = tmp;ps->capacity = NewCapacity;}
}
void STPop(ST* ps)
{assert(ps);assert(ps->top > 0);ps->top--;
}
int STSize(ST* ps)
{assert(ps);return ps->top;
}
bool STEmpty(ST* ps)
{assert(ps);return ps->top == NULL;
}
#pragma once
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<stdbool.h>
//#define N 10
typedef int SLDataType;
typedef struct Stack
{SLDataType* a;int top;int capacity;
}ST;
void STInit(ST* ps);
void STDestroy(ST* ps);
void SLPush(ST* ps, SLDataType x);
void STPop(ST* ps);
int STSize(ST* ps);
bool STEmpty(ST* ps);

相关文章:

【数据结构】:栈的实现

1 栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则 压栈…...

微前端一:技术选型

微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。 微前端架构具备以下几个核心价值&#xff1a; 1、技术栈无关 主框架不限制接入应用的技术栈&#xff0c;微应用具备完全自主权 2、独立开发、独立部署 微应用仓库独立&#xff0…...

FPGA project : flash_continue_write

本实验学习了通过spi通信协议&#xff0c;驱动flash&#xff1b;完成连续写操作。 连续写&#xff1a; 本质上还是页编程指令&#xff0c;两种连续写的方式&#xff1a; 1&#xff0c;每次只写1byte的数据。 2&#xff0c;每次写满1页数据&#xff0c;计算剩余数据够不够写…...

论文阅读:Rethinking Range View Representation for LiDAR Segmentation

来源ICCV2023 0、摘要 LiDAR分割对于自动驾驶感知至关重要。最近的趋势有利于基于点或体素的方法&#xff0c;因为它们通常产生比传统的距离视图表示更好的性能。在这项工作中&#xff0c;我们揭示了建立强大的距离视图模型的几个关键因素。我们观察到&#xff0c;“多对一”…...

本地配置免费的https咋做?

大家好这里是tony4geek。 今天和公司的小伙伴对接项目&#xff0c;因为涉及到https的权限调用。所以在服务器本地localhost 要配置https用来测试 。现在把过程中遇到的问题记录下来。 • 因为是测试用所以生成https的证书用免费的就可以了。 openssl req -x509 -nodes -days …...

微信小程序框架---详细教程

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 &#xff0c;越幸运。 目录 1.框架 1.1响应的数据绑定 1.2.页面管理 1.3.基础组件 1.4.丰富的 API 2.视图层 View 2.1.介绍 …...

【LeetCode刷题(数组and排序)】:存在重复元素

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 &#xff0c;返回 true &#xff1b;如果数组中每个元素互不相同&#xff0c;返回 false 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,1] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;nums [1,2…...

半导体产业链解析:晶圆厂、无晶圆厂与代工厂的比较与作用

半导体产业一直是全球科技发展的关键驱动力&#xff0c;在半导体产业中&#xff0c;晶圆厂、无晶圆厂公司和代工厂是三个重要的参与者。它们在产业环节、生产方式、经营模式和市场竞争等方面存在一些显著差异。本文将探讨半导体晶圆厂、无晶圆厂公司和代工厂之间的区别&#xf…...

Apipost一键压测已支持导入CSV文件

最近更新中Apipost对UI页面进行了一些调整&#xff0c;另外一键压测功能支持参数化&#xff01;本篇文章将详细介绍这些改动&#xff01; API调试页面的细节改动 在请求区填入请求参数或脚本时会有相应的标识 如在Query中填入多个参数时上方会展示数量 在预、后执行脚本中写…...

RabbitMQ的5种模式——再探RabbitMQ的模式,简单、工作,发布订阅(广播),路由、主题 页面分析

前言 RabbitMQ作为一款常用的消息中间件&#xff0c;在微服务项目中得到大量应用&#xff0c;其本身是微服务中的重点和难点&#xff0c;有不少概念我自己的也是一知半解&#xff0c;本系列博客尝试结合实际应用场景阐述RabbitMQ的应用&#xff0c;分析其为什么使用&#xff0…...

初识华为云数据库GaussDB for openGauss

01 前言 GaussDB是华为自主创新研发的分布式关系型数据库。该产品具备企业级复杂事务混合负载能力&#xff0c;同时支持分布式事务&#xff0c;同城跨AZ部署&#xff0c;数据0丢失&#xff0c;支持1000的扩展能力&#xff0c;PB级海量存储。同时拥有云上高可用&#xff0c;高可…...

深圳寄包裹到德国

深圳&#xff0c;作为全球最发达的城市之一&#xff0c;以其高效的物流服务在全球范围内享有盛名。如果你正在寻找一种方式将包裹从深圳寄送到德国&#xff0c;那么本文将为你提供详细的步骤和建议。 第一步&#xff1a;了解国际邮寄的基本信息 首先&#xff0c;你需要了解包裹…...

系统架构师备考倒计时22天(每日知识点)Redis篇

Redis篇 1.Redis与Memcache能力对比 工作MemCacheRedis数据类型简单 key/value 结构丰富的数据结构持久性不支持支持分布式存储客户端哈希分片/一致性哈希多种方式&#xff0c;主从、Sentinel、Cluster 等多线程支持支持支持(Redis5.0及以前版本不支持)内存管理私有内存池/内…...

现有库存(on-hand inventory),库存水平(inventory level),库存位置(inventory position)

库存管理中&#xff0c;这几个名词特别容易混&#xff0c;干脆写一篇博客总结下。 现有库存(on-hand inventory)&#xff0c;是指持有的真实库存量 库存水平(inventory level)&#xff0c;现有库存减去延迟交付的订单 inventory level on-hand inventory − backorder quant…...

智慧空开让用电更安全、管理更智能——电脑APP远程控制开合闸

安科瑞 崔丽洁 01 什么是低压断路器&#xff1f;低压断路器的定义是&#xff1a;能够接通、承载及分断正常电路条件下的电流&#xff0c;也能在规定的非正常电路条件&#xff08;过载、短路、特别是短路&#xff09;下接通、承载一定时间和分断电流的开关电器。 断路器的分类&…...

PyTorch 中张量运算广播

TLDR 右对齐&#xff0c;空补一&#xff0c;从左往右依维运算 [m] [x, y] [m x, m y] 正文 以如下 a b 两个 tensor 计算为例 a torch.tensor([[1],[2],[3], ]) b torch.tensor([[[1, 2, 3],],[[4, 5, 6],],[[7, 8, 9],], ]) # a.shape (3, 1) # b.shape (3, 1, 3)首先…...

Blender:使用立方体制作动漫头像

好久没水文章 排名都掉到1w外了 ~_~ 学习一下blender&#xff0c;看能不能学习一点曲面变形的思路 一些快捷键 ctrl 空格&#xff1a;区域最大化&#xff0c;就是全屏 ctrl alt 空格&#xff1a;也是区域最大化 shift b&#xff1a;框选区域然后最大化显示该范围 shift 空…...

【ppt技巧】ppt里的图片如何提取出来?

之前分享过如何将PPT文件导出成图片&#xff0c;今天继续分享PPT技巧&#xff0c;如何提取出PPT文件里面的图片。 首先&#xff0c;我们将PPT文件的后缀名&#xff0c;修改为rar&#xff0c;将文件改为压缩包文件 然后我们将压缩包文件进行解压 最好是以文件夹的形式解压出来…...

Python学习基础笔记七十三——调试程序

为什么要调试&#xff1f; 我们发现程序运行的结果和我们预期的不符。 程序运行的错误&#xff0c;我们通常叫做bug。 有两种类型的bug&#xff1a;语句错误和逻辑错误。 所谓语句错误&#xff0c;就是执行代码的时候&#xff0c;解释器就可以直接发现的代码错误&#xff0c…...

BOSHIDA DC电源模块关于电容器的电解液位置

BOSHIDA DC电源模块关于电容器的电解液位置 DC电源模块中的电容器扮演着一个非常重要的角色&#xff0c;它们能够对电路提供稳定的电源电压&#xff0c;同时也可以作为电路中的滤波器&#xff0c;去除电路中的噪声和纹波。在DC电源模块中使用的电容器通常是电解型电容器&#…...

【限时决策窗口】ChatGPT Plus会员购买指南:避开3个高发误区,抓住GPT-4 Turbo+文件解析+自定义GPT三重红利期

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ChatGPT Plus会员值不值得买 ChatGPT Plus 提供每月 $20 的订阅服务&#xff0c;主打 GPT-4 模型访问、高优先级响应队列、文件上传解析&#xff08;PDF/CSV/TXT 等&#xff09;及自定义 GPTs 功能。是…...

跨界阅读如何提升工程师思维:从历史轶事看芯片验证与项目管理

1. 从拿破仑的“私藏”到芯片设计的奇闻&#xff1a;一本跨界奇书的阅读体验作为一名在电子设计自动化&#xff08;EDA&#xff09;和可编程逻辑领域摸爬滚打了十多年的工程师&#xff0c;我的日常被Verilog代码、时序约束、PCB走线和散热仿真填满。书架上也堆满了《CMOS VLSI设…...

【Linux】初见,进程概念

1.冯诺依曼体系结构我们所见的大部分计算机都是遵循的冯诺依曼体系结构我们的计算机都是由一个个硬件所组成的输出设备&#xff1a;显示器、音响、摄像头、网卡.......输入设备&#xff1a;鼠标、键盘 、网卡.......中央处理器&#xff08;CPU&#xff09;&#xff1a;包含运算…...

20-20-20护眼规则智能助手:ProjectEye保护你的数字健康

20-20-20护眼规则智能助手&#xff1a;ProjectEye保护你的数字健康 【免费下载链接】ProjectEye &#x1f60e; 一个基于20-20-20规则的用眼休息提醒Windows软件 项目地址: https://gitcode.com/gh_mirrors/pr/ProjectEye 在数字化工作成为常态的今天&#xff0c;你是否…...

SwiftUI原生集成ChatGPT API:从架构设计到流式响应实战

1. 项目概述&#xff1a;一个原生的Swift版ChatGPT客户端最近在折腾iOS和macOS上的AI应用开发&#xff0c;发现了一个挺有意思的开源项目&#xff1a;alfianlosari/ChatGPTSwift。简单来说&#xff0c;这是一个用纯SwiftUI构建的、直接调用OpenAI官方API的ChatGPT客户端。它不是…...

Linaria与Bun集成:极速JavaScript运行时的样式处理终极指南 [特殊字符]

Linaria与Bun集成&#xff1a;极速JavaScript运行时的样式处理终极指南 &#x1f680; 【免费下载链接】linaria Zero-runtime CSS in JS library 项目地址: https://gitcode.com/gh_mirrors/li/linaria 在现代前端开发中&#xff0c;CSS-in-JS技术已经成为构建可维护、…...

从Xilinx 7系列FPGA看架构演进与工程选型实战

1. 项目概述&#xff1a;从一则旧闻看FPGA的演进与选型看到这个标题&#xff0c;很多朋友可能会觉得这是一则十多年前的“旧闻”了。确实&#xff0c;2011年Xilinx宣布其28nm 7系列FPGA在六个月内获得超过200个设计订单&#xff0c;这在当时是半导体行业的一个里程碑。但今天回…...

BG3模组管理器版本兼容性终极指南:告别游戏崩溃和模组失效

BG3模组管理器版本兼容性终极指南&#xff1a;告别游戏崩溃和模组失效 【免费下载链接】BG3ModManager A mod manager for Baldurs Gate 3. This is the only official source! 项目地址: https://gitcode.com/gh_mirrors/bg/BG3ModManager BG3模组管理器是《博德之门3》…...

量子退火在锂离子电池材料优化中的应用与原理

1. 量子退火技术原理与材料优化应用概述量子退火&#xff08;Quantum Annealing&#xff09;是一种基于量子力学原理的优化算法&#xff0c;它通过模拟量子系统的绝热演化过程来寻找复杂问题的全局最优解。与传统模拟退火算法相比&#xff0c;量子退火利用量子隧穿效应而非热涨…...

【场景生成与研究】考虑时序相关性MC的场景生成与削减研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。&#x1f34e;完整代码获取 定制创新 论文复现点击&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f3…...