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

学习数据结构(9)栈和队列上

1.栈的概念

栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作 的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出(先进先出)的原则

栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶,栈的删除操作叫做出栈,出数据也在栈顶

栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些,因为数组在尾上插入数据的代价比较小

2.栈的实现

(1)初始化栈

(2)销毁栈

(3)判空

(4)入栈

(5)出栈

(6)取栈顶元素

 

(7)获取栈中有效元素个数

3.关于栈的算法题

解法一(参考解法):遍历字符串,遇到左括号则入栈,遇到右括号时,判断栈是否为空,是则,销毁栈,直接返回false,不是则取栈顶数据,判断栈顶数据是否与右括号相对应,是则将栈顶数据出栈,不是则销毁栈,直接返回false,循环结束,判断栈是否为空,为空则说明括号全部配对,返回true,不为空则只有一种可能:栈中有未配对的左括号,返回false

4.队列的概念

队列是只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点,进行插入操作的一端称为队尾,进行删除操作的一端称为队头

队列也可以用数组和链表的结构实现,使用链表的结构实现更优,因为如果使用数组的结构,出队列就在数组头上出数据,效率会比较低

5.队列的实现

(1)初始化队列

(2)队列判空

(3)入队列

(4)出队列

 (5)销毁队列

(6)取队头元素

       

(7)取队尾元素

       

(8)队列有效元素个数

            

http://www.dtcms.com/a/14416.html

相关文章:

  • RabbitMQ 如何设置限流?
  • 前沿科技改变生活新趋势
  • 掌握 systemd:Linux 服务管理的核心工具
  • C++病毒(^_^|)(2)
  • Android Handler的机制跟源码分析
  • Android 系统面试问题
  • MySQL主从同步+binlog
  • 同为科技智能PDU助力Deepseek人工智能和数据交互的快速发展
  • 【python】简单的flask做页面。一组字母组成的所有单词。这里的输入是一组字母,而输出是所有可能得字母组成的单词列表
  • 21道关于Vue3的面试题及其解析
  • Linux学习笔记18---串口格式化函数移植实验
  • langchain学习笔记之小样本提示词Few-shot Prompt Template
  • 19.3 连接数据库
  • stm32点灯 GPIO的输出模式
  • 开源的轻量级分布式文件系统FastDFS
  • 土星云边缘计算微服务器 SE110S-WA32加持DeepSeek,本地部署企业私有推理大模型!
  • Ubuntu安装geteck/jetlinks实战:源码启动
  • 热更图片方案
  • 深入解析:如何在C#和C/C++之间安全高效地通过P/Invoke传递多维数组
  • APNs证书添加到Trust Store (信任库)
  • Excel中不用复杂公式根据指定X列的数值N复制整行数据N行简单方法
  • leetcode 543. 二叉树的直径
  • 基于SpringBoot的宠物健康顾问管理系统
  • DeepSeek 本地部署及深度使用
  • 本地部署【LLM-deepseek】大模型 ollama+deepseek/conda(python)+openwebui/docker+openwebui
  • Linux自旋锁:探秘内核同步利器
  • [MySQL]1-MySQL结构与运行原理
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-22- 操作鼠标拖拽 - 下篇(详细教程)
  • Django在终端创建项目(pycharm Windows)
  • 区块链+隐私计算:长安链多方计算合约标准协议(CMMPC-1)发布