首页 > 其他分享 >数据结构 3 栈和队列

数据结构 3 栈和队列

时间:2022-10-09 10:34:47浏览次数:75  
标签:删除 队列 元素 栈顶 调用函数 插入 数据结构


栈和队列也算是 数据类型。
以为都是在首位操作,栈和队列 克服了 线性表添加删除需要移动大量元素的弱点。

栈仅在尾部进行插入和删除,尾部叫做栈顶, 表头叫做栈底。后进先出。
last in first out LIFO
空栈。
插入叫入栈, 删除元素叫出栈。
顺序栈,的顺序存储结构是利用一组 地址连续的存储单元,依次存放栈底到栈顶的元素。 top表示栈顶元素的位置,那么 top=0就是空栈。非空栈的栈顶指针top始终在 栈顶元素的下一个位置。

代码写的过于聚合,容易造成很高深的错觉,其实,是不容易看出思路来的。

栈的应用
1,数值转换 ​​​https://github.com/kunpengku/farmer/blob/master/cpp/mod_2.cpp​​​
2,括号匹配的检验
3,行编辑程序, 栈用来做 退格功能。
4,迷宫求解。
5,表达式求值,算符优先算法。
任何一个表达式都是由,操作数,操作符,界限符组成。
括号就是界限符。
6,栈与 递归
调用自己的函数 成为递归函数。
汉诺塔问题。
函数调用栈:
在运行被调用函数前,系统要做三件事情:
1,将所有实参,返回地址传给被调函数保存。
2,为被调用函数的局部变量分配存储区,
3,将控制权转移到被调用函数入口。

在被调函数返回前,也要做三件事:
1,保存计算结果。
2,释放被调函数的局部变量,
3,依照保存的返回地址,将控制权交给调用函数。

递归函数方便在 : 这种编程,不需用户自己,而由系统来管理递归工作栈。

队列就是理想的排队。 这里没有插队的人。
first in first out FIFO
在一端插入,另一端删除。
允许插入的一头叫队尾rear, 允许删除的一头叫 队头front。
作业队列。
头节点不是第一个元素。头节点就是头节点。

删除插入,应考虑边界情况。
在非空队列中,头指针始终指向队头元素, 尾指针始终指向队尾的下一个位置。


标签:删除,队列,元素,栈顶,调用函数,插入,数据结构
From: https://blog.51cto.com/u_15815563/5739826

相关文章

  • 状态机:给定规则下分类讨论——红黑树(+队列实验-银行模拟)
    状态机:分类讨论,为了递归与美观,把重复的去掉dueto二叉树不保证平衡,herecomesRed-Blacktree——每条路黑高相同,lmax<2lmin类似还有AVLT(1.44lgn,但维护代价大)红黑树......
  • 【博学谷学习记录】超强总结,用心分享|Java基础分享-数据结构(数组、链表)
    目录1.数组2.链表2.1.链表简介2.2.链表分类2.2.1.单链表2.2.2.循环链表2.2.3.双向链表2.2.4.双向循环链表1.数组数组(Array) 是一种很常见的数据结构。......
  • 消息队列的选型
    消息列队是什么?消息队列是在消息的传输过程中保存消息的容器。(百度百科)为什么要使用消息队列?优点与应用:异步处理,应用解耦,错峰与流控,消息通讯,数据分发,失败重试,日志处理......
  • C++优先队列(priority queue)及重载运算符
    定义:普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高......
  • 算法练习-第十一天【栈与队列】
    栈与队列232.用栈实现队列参考:代码随想录思路一道模拟题,不涉及到算法部分。如果想用栈来实现队列,至少需要2个栈,一个输入栈一个输出栈。在进行push操作时,将数据放入到......
  • 数据结构之线性表、队列、栈
    一、线性表1.两种实现方式ArrayList底层逻辑是使用数组进行实现的,不支持线程同步,非线程安全LinkedList底层逻辑是使用List实现的,不支持线程同步,非线程安全2.比较A......
  • 03 栈与递归 | 数据结构与算法
    1.栈栈的定义:限定在表尾进行插入和删除操作的线性表空栈:不换任何元素的栈栈顶top:允许插入删除的一端栈的操作(连续设计)置空栈make_null_stack()#definemaxn......
  • redis 数据结构篇
    字符串类型字符串类型是redis当中最基本的数据类型。它能存储任何形式的字符串,包括二进制数据。也就是说可以存储图片。一个字符串类型的键允许值的最大容量是512MB......
  • 阻塞队列、线程池、原子性及并发工具类
    目录​​一、阻塞队列​​​​二、线程池​​​​静态方法创建线程池:​​​​使用ThreadPoolexecutor类创建线程池:​​​​三、原子性​​​​四、并发工具类​​​​HashTa......
  • 数据结构基础—线性表
    数据结构基础—线性表线性表是一种顺序存储结构其特点有:存在唯一的一个被成为”第一个”的数据元素存在唯一的一个被成为”最后一个”的数据元素除第一个之外,集合中的......