在做题中学习(26):用两个栈实现队列

在做题中学习(26):用两个栈实现队列_第1张图片

 思路:把一个栈倒到另一个栈,另一个栈这时的出栈元素正好满足原先栈“先进先出”,所以让一个栈push,一个栈pop就行,可以看下图2.

在做题中学习(26):用两个栈实现队列_第2张图片

 先给个结构体放我的两个栈

在做题中学习(26):用两个栈实现队列_第3张图片

 先创建一个自己的队列,里面是由两个栈来实现的

 在做题中学习(26):用两个栈实现队列_第4张图片

 push很简单:push到pushst栈里

在做题中学习(26):用两个栈实现队列_第5张图片

 写pop前先写peek:peek是要返回队列开头的数据,而要获取这个数据,就得先倒一遍到popst栈,再出栈。

在做题中学习(26):用两个栈实现队列_第6张图片

 再写pop:有了peek就可以直接复用,删除并返回队列开头的元素

在做题中学习(26):用两个栈实现队列_第7张图片

 判空:两个栈都为空,队列才为空,不然就只是有数据但没出来罢了。

销毁栈:先销毁栈里面的数据(两个队列),再释放掉栈。

在做题中学习(26):用两个栈实现队列_第8张图片

 附上完整代码:在做题中学习(26):用两个栈实现队列_第9张图片

 

 

你可能感兴趣的:(学习,数据结构,c语言)