栈和队列的相互实现(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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值