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

栈和队列的相互实现(C)

1.用队列实现栈

栈后进先出,队列先进先出,这里我们要用两个队列实现栈。

LeetCode 225.用队列实现栈 (C语言,要自己造轮子,造个栈的结构出来)

例如,队列先进数据是1234,然后出数据遵循栈的后进先出就是4321.

数据通过在两个队列之间的相互导出来实现,push数据要向不为空的队列导入,q1先push1234,然后将q1的前size-1个数据(123)导入到q2队列中,q1的Top数据是4直接Pop,这样就拿到了4,如果再向队列push数据的话就要向不为空的队列中导入(避免自己将数据导丢),这里就要将56push到q2,然后将q2中的size-1个数据( 1235)导入到q1中,q2的Top就是6直接Pop拿到数据6,然后将q1中的前size-1个数据(123)导入到q2中,q1的Top是5直接Pop拿到5,这样循环下去就会实现栈的后进先出,最后出数据的顺序就是465321。

. - 力扣(LeetCode)

2.用栈实现队列

栈后进先出,队列先进先出,这里我们要用两个栈实现队列。

LeetCode 232.用栈实现队列 (C语言,要自己造轮子,造个队列的结构出来)

例如,栈的入栈顺序是1234,那么队列的出队顺序就是1234

这里和上面的两个队列实现栈的导数据稍微有点区别,这里我们设置两个栈,一个为pushst(用来push数据)另一个为popst(用来pop出数据),push数据就往pushst里放,如果popst为空就往popst里导数据压栈(把pushst的栈顶数据压栈到popst中),直到pushst中的数据为空,如果popst不为空,popst就直接pop栈顶数据(Top),数据出完后再把pushst里的数据导入到popst中。

两个栈不用来回导数据,只要各司其职就好。

. - 力扣(LeetCode)


http://www.mrgr.cn/news/41333.html

相关文章:

  • QT系统学习篇(2)- Qt跨平台GUI原理机制
  • 【分别为微服务云原生】9分钟ActiveMQ延时消息队列:定时任务的革命与Quartz的较量
  • 主存储器——半导体芯片简介
  • 大数据实时数仓Hologres(三):存储格式介绍
  • Java 方法前面加 <T> 是做什么?泛型方法
  • 2025河南国际台球产业展览会,中国国际台球产业链发展大会
  • 【EXCEL数据处理】000010 案列 EXCEL文本型和常规型转换。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来,方便查看。
  • 完全背包问题
  • 声纳技术24.1.19声纳定向方法
  • C++类和对象(上)
  • rtmp协议转websocketflv的去队列积压
  • 【EXCEL数据处理】000011 案列 EXCEL带有三角形图标的单元格转换,和文本日期格式转换。
  • 三、数据链路层(下)
  • HCIP-HarmonyOS Application Developer 习题(四)
  • 药物识别与分类系统源码分享
  • 【MySQL报错】---Data truncated for column ‘age‘ at row...
  • [C++] 剖析AVL树功能的实现原理
  • 硬件面试(一)
  • 深入剖析JavaScript中的encodeURIComponent函数:原理、应用及注意事项
  • Linux查看触摸坐标点的方法,触觉智能RK3562开发板,瑞芯微、全志等通用