数据结构之堆栈(四)

SXU-软件项目管理-朱少民-第九章 项目监控与控制 第十章 项目收尾 附相关习题 软件项目管理-朱少民-第九章 项目监控与控制 附相关习题 阅读详情

栈

  • 什么是栈?

    栈在实际的例子中有点像手枪的弹夹。你每次添加子弹的时候都是会把你前面添加的子弹给压到最下面。而打出来的子弹都是你最新的。所以就有一个特点,先进去的子弹会先出来。后进去的子弹回后出来。栈结构在网页中是很常用的一个数据结构。我们很经常用的浏览器的前进后退功能就是这样的。
    栈是限定了仅在表尾(栈顶)进行插入删除的操作的线性表

  • 栈的例子
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    注意:栈一定是遵循先进先出的原则。所以想想312这种情况会发生吗?还有一点栈其实也是一个线性表

  • 栈的结构定义 在这里插入图片描述

栈的几种常见情况(顺序结构)

在这里插入图片描述

  1. 进栈
    在这里插入图片描述

在这里插入图片描述
2. 出栈
在这里插入图片描述

  • 优点:不会有进行删除的操作时有大量移动
  • 缺点:还是数组的缺点,要事先明确栈的大小
    为了解决这个大小的问题现在可以用两个完全一样的栈完成
    将两个确定好的栈,变成一个数组。怎么变呢?
    这样把,数组是有两个端点。我们的栈也是。那么我们可以在把其中一个栈的栈底放在数组的开始,另一个栈的栈顶放在数组的末端。就像这样
    在这里插入图片描述
    这样就有top控制着各自的栈
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

栈的链式结构

在这里插入图片描述
栈的链式结构和单链表是差不多的。只不多是头指针存着top

递归

回到数学问题。一对新兔子要两个月才能进行繁殖,有繁殖能力之后是每月繁殖一对。那么由问题可得
在这里插入图片描述
我们发现一下规律。发现相邻的两项构成了下一项。这就是著名的斐波那契数列
在这里插入图片描述

栈的应用

四则运算符(暂定)

队列

  • 队列是只允许在一段(队头)进行删除,另一端(队尾)进行插入的线性表。大白话就是先进先出,也就是我们的排队结账。既然是线性表,那么他就符合线性表的所有特性,只不过是删除和插入不一样
顺序队列

插入数据
在这里插入图片描述
删除数据(和顺序结构的删除是一样的逻辑,这样他的时间复杂度就是On)
在这里插入图片描述
为了可以提高性能。用空间去换取时间。所以此时需要两个指针去控制两个整个队列
在这里插入图片描述
例子:
在这里插入图片描述
在这里插入图片描述
这样就是一个顺序的队列。但是问题又来了,当我还需要插入的时候,你的rear已经在末尾了,从我们前面的学习可以知道。现在的队列已经满了,你插不进去了,实际的情况我们还有两个位置。这个情况就叫做假溢出。

循环队列

为了解决假溢出,现在引进一个循环队列。将上面的图再改进一遍。rear指到了最后的时候就指回去第一个
在这里插入图片描述
在这里插入图片描述
那么问题又来了,现在队空的时候是rear == front,队满呢?
方法一:借助一个变量flag,对空的时候是flag=0,队满的时候是flag=1
方法二:始终预留一个位置。预留了位置,我们也需要去一些表达式去判断
(rear + 1 ) % size ==front
在这里插入图片描述

实现画布拖拽算子排布,通过flink实现算子编排计算,如何实现? 🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。 阅读详情

相关推荐

FPGA高速通信双核解析:CMAC与Interlaken硬核的实战对比

本文深入对比了FPGA中两大高速通信硬核CMAC与Interlaken的核心差异与应用场景。CMAC作为标准以太网接入方案,适用于网卡、交换机等需对外互联的场景;而Interlaken则以极低延迟和高效通道化能力,专为芯片间、板间裸数据高速传输设计。文章通过实战案例与性能指标分析,为FPGA高速通信方案选型提供清晰指南。

f9g0h的博客 846

数据结构-堆和栈

牛客网题库中算法入门的题,进行自己学习

m0_46569567的博客 224

SV fork join_none & for循环结合使用

fork join_none与循环联用常见问题解决方案

ZhangShuHuai11的博客 880

堆、栈及静态数据区详解

一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量

zlf0727的专栏 1333

高效网络流量回放:使用tcpreplay实现多目标IP的pcap重放

本文详细介绍了如何使用tcpreplay工具高效回放网络流量pcap文件,并实现多目标IP发送。通过tcprewrite编辑报文和并行回放策略,可满足安全测试、负载测试等场景需求。文章涵盖安装、基础回放、核心技巧及性能优化,帮助读者构建真实流量压力测试环境。

weixin_29297127的博客 480

Python爬虫实战:采集行业协会、研究机构等平台的政策文件列表与PDF链接批量收集系统,支持自动下载、分类归档和数据库管理(SQLite持久化存储)!

我长期专注 Python 爬虫工程化实战,主理专栏 👉 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 640

计算机中堆栈的应用举例,西门子S7-200PLC中涉及堆栈操作的指令和梯形图应用实例...

摘要:堆栈是计算机中最常用的一种数据结构,遵循先入后出的原则,一般用于保存数据。在S7-200PLC中涉及堆栈操作的指令有以下三种,最后本文给出了梯形图应用实例。 逻辑入栈(LPS,Logic Push)指令复制栈顶的值并将这个值推入栈顶,原栈顶中各级数据依次向下一级推移,栈底值被推出丢失。逻辑读栈(LRD,Logic Read)指令将堆栈中第2层的值复制到栈顶,第2~9层的数据不变堆栈是计算...

weixin_35002851的博客 5356

YOLO11改进|卷积篇|引入SPDConv

YOLO11中添加SPDConv卷积

A1983Z的博客 3697

堆栈队列实例

堆栈:先进后出 队列:先进先出 日常生活中队列很常见。还有什么堆栈的典型例子? 夏天逛超市时,你可能会忍不住想喝一瓶冰饮料降降温。 可是,困扰你的是:放冰箱外头的饮料往往并不冰,而冰箱深处你够不着的地方,才是你想要的。 想想看:冰箱中的饮料应该组织成“队列”还是“堆栈”?你对超市中的冰箱设计有什么改进性的建议? 比如交试卷,假设学生交试卷的方向都统一,且后来的学生都放在

acmsongye的博客 6728

【蓝桥杯单片机组第八届省赛】— 基于单片机的电子钟程序设计与调试

1、初赛试题 1.1 基本要求 (1)使用 CT107D 单片机竞赛板, 完成“电子钟” 功能的程序设计与调试; (2)设计与调试过程中,可参考组委会提供的“资源数据包”; (3)Keil 工程文件以准考证号命名, 完成设计后, 提交完整、 可编译的 Keil工程文件到服务器。 1.2 硬件框图 1.3功能描述 1.3.1 初始化 (1)关闭蜂鸣器、继电器等无关外...

Fanjufei的博客 3661

端侧 AI 落地避坑指南(中):为什么 QAT 救不了精度?——对齐“融合后算子“的硬件物理约束

在上一篇文章中,我们深入探讨了量化的本质,并得出结论:QAT(量化感知训练)是保持精度的关键。明明做了 QAT,精度还是崩塌了!让我们看一个真实的案例:✅ 使用了✅ 配置了量化✅ 训练了 50 个 epoch,学习率降为原来的 1/10✅ 冻结了 BN 统计量FP32 模型:mAP = 0.85QAT 后 FP32:mAP = 0.84(正常)工具量化后:mAP = 0.68(崩塌!问题出在哪里?层融合(Layer Fusion)机制。

weixin_51988935的博客 55

堆栈的例子——来解决计算机的表达式计算

计算机一般利用后缀表达式来计算多项式:比如对于中缀表达式a+b*c-d/e 其后缀表达式为a b c * + d e / - 策略是:遇到运算数:存储起来 遇到运算符号:将最近存储的两个数进行运算,然后再把运算结果存储回去。 这显然就是后进先出的堆栈模型。 利用堆栈,具体例子:6 2 / 3 - 4 2 * + 遇到6 存储 遇到2 存储 遇到除号,将前边两位取出,进行前边除以后边

liutong1995的博客 820

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SDU 数据结构实验四堆栈的应用

SDU 数据结构实验四堆栈的应用 实验目的:掌握堆栈的使用。 实验内容: 1、输入一个数学表达式(假定表达式输入格式合法),计算表达式结果 并输出。 2、数学表达式由单个数字和运算符*“+”、 “-”、 “”、 “/”、 “(、) ”构成, 例如 2+3(4+5)-6/4。 3、变量、输出采用整数,只舍不入。 #include<cstdio> #include<iostream...

weixin_44742887的博客 692

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

重温数据结构之四——队列与堆栈

队列与堆栈队列与堆栈是非常常见的数据结构,队列是先进先出,先进来的放在对头,后进来的排在队尾,堆栈相反,是先进后出,先进来的放在栈底,后进的放在栈顶!队列队列的实现非常的简单。可以用链表或者数组来实现,但是用链表会更加高效一点,因为使用数组来实现,由于长度是固定的,可能需要不停的开辟空间,开销相对较大,而且可能出现假溢出!堆栈堆栈运用也比较广泛,可用链表或者数组来实现!比较常用的就是中缀表达式与后缀

itheimach的专栏 463

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

数据结构C语言版(四)堆栈的实现

1. 堆栈 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 2. 堆栈的两种实现 2.1 数组实现堆栈 头文件声明函数.h #pragma once #include<stdio.h> #include<string.

qq_43685242的博客 1394

山东大学《数据结构》实验四:堆栈的应用

实验四 堆栈的应用 一、 实验目的 掌握堆栈的使用。 二、 实验内容 1、输入一个数学表达式(假定表达式输入格式合法),计算表达式结果 并输出。 2、数学表达式由单个数字和运算符“+”、“-”、“*”、“/”、“(、) ”构成, 例如 2 + 3 * ( 4 + 5 ) - 6 / 4。 3、变量、输出采用整数,只舍不入。 三、 注意事项 本题测试一定要多找几个测试用例,特别是复杂用例、边界用例。...

1个胖墩的课后笔记 1843

数据结构与算法学习笔记(四)堆栈和队列

堆栈和队列,是两种相当典型的抽象数据类型,也是一种有特定进出规则的线性表;主要特性是,根据自身的规则按位置插入和删除数据; 一、堆栈stack 堆栈(stack):last in first out(LIFO)先进后出,入栈(压入push)、出栈(弹出pop); 应用范围:递归调用和返回,二叉树和森林的遍历操作,调用子程序和从子程序中返回,算术表达式的转换和求值,CPU的中断处理(interrupt handling)中重要数据的保护作用(可以对重要的寄存器或变量进行...

qq_44599368的博客 927

【数据结构与算法】之四线性结构----堆栈

什么是堆栈? 后缀表达式—后缀表达式求值策略:从左向右”扫描“,逐个处理运算数和运算符号 中缀表达式—中缀表达式求值策略: 堆栈的抽象数据类型描述 堆栈(Stack):具有一定操作约束的线性表,只在一端(栈顶,Top)做插入、删除 插入数据:入栈(Push) 删除数据:出栈(Pop) 后入先出:Last In First Out(LIFO) 堆栈的顺序存储实现 栈的顺序存储结构通常由一个...

weixin_42104289的博客 266

考研数据结构与算法之堆栈的使用(四)链表实现的堆栈

还是参考了别人的代码,不过比我自己写出来的确实是要简洁的多,不过仍然有不规范的地方,但是仍然值得我学习一下,在敲打

我是一只熊猫 763

深入理解数据结构——堆栈应用(四染色算法)

#include <iostream> #include <string> using namespace std; typedef char Etype; /************************背包问题*************************/ #define PRODUCTS EType struct PRODUCTS { char name[8]; int weight; int number; char place[20]; }; .

seek97的博客 835

集合框架四:LinkedList基本应用(用LinkedList模拟堆栈或队列的数据结构)

package collection; import java.util.LinkedList; class DuiLie{  private LinkedList link;    DuiLie(){   link = new LinkedList();  }    public void myAdd(Object obj){   link.addFirst(obj);

lily0806的专栏 523

数据结构与算法导论(C++)连载(四)--堆栈(顺序存储和链式存储)

堆栈是一种特殊的线性表,因此也可以分为顺序存储和链式存储。队列最突出的特点是先进后出。 一、顺序存储 新建一个类Stack,在Stack.h中: using namespace std; #define ElementType int #define Maxsize 1024 class Stack { public: Stack(); ~Stack(); void Push(...

qq_28821995的博客 272

图像的连通域检测的堆栈算法

 图像的连通域寻找在直觉上可使用递归的方法,进而可以使用堆栈数据结构进行改进。本文描述了一个图像寻找连通域的堆栈方法,四连通域和八联通域的选择可以使用一个参数来确定。 以下是代码: //根据种子点寻找8连通域//使用两遍扫描//查找所有的连通域 //划分为前景、背景、和无关位置 //一个点 也必须当做连通域 bool CD2Detec...

alppkk4545的博客 262

【数据结构】堆栈

堆栈(Stack)重要的数据结构,它们在计算机科学和软件开发中都有广泛的应用。下面我将分别解释这种数据结构的特点和用途。

大雨淅淅的博客 3239

数据结构之堆栈

本篇总结了数据结构里有关堆栈的知识点。

weixin_73293671的博客 5832
上一篇: 数据结构(三)---链表
下一篇: vue3+ts中使用封装后的echarts。适合小白(报错的也可以看Initialize failed: invalid dom.)
new money
博客等级 码龄8年 777粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值