首页 > 编程知识 正文

剑指offer100,剑指offer和编程之美

时间:2023-05-06 02:31:21 阅读:26860 作者:1352

欢迎使用公众号:

主题:个堆栈实现队列

主题:在两个堆栈中实现一个队列,完成队列推送和Pop操作。 队列中的元素是int类型。

思想分析:在数据结构中,堆栈和队列都是线性表,堆栈的结构就像子代的遮盖,数据进行后再出来。 堆栈结构如下图所示。

矩阵的结构与矩阵相似,是先进先出。 队列结构如下图所示。

既然我们知道堆栈和队列的结构,我们如何在两个堆栈上实现队列呢?

由于堆栈是后退先进先出的数据结构,所以将数据依次推入第一个堆栈后,从该堆栈中依次弹出,推入第二个堆栈。 此时,从第2个堆栈取得数据后,表现得就像是“先进先出”的队列数据结构一样。 具体地说,考虑使用两个栈实现一个队列,存储第一个栈(栈1 )中输入的元素(队列末端元素),并且从第二个栈(栈2 )中获取队列末端元素。 如果第一个堆栈(堆栈1 )为空,则依次弹出第二个堆栈(堆栈2 )中的所有元素,然后按顺序推入第一个堆栈。

代码实现:

#--编码: utf-8-- ' ' @ time :2021/8/3012:21 @ author : lyp @ filename 3360 py offer 04.py @ soft ter队列中' ' ' class statckToqueue:#定义两个堆栈def__init_(self ) : self.stack1=[ ] self.stack2=[ ] #定义pop方法是堆栈2中的数值popdefpop(self ) : if self.stack2==[ ] : while self.stack 13360 self.stack2. append ) self.stack1.pood 将数据推送到第一个堆栈上defpush(self,node ) 3360self.stack1.append(node ) if _ name _=' _ main _ ' 3360 stq=statckkk

代码分析:首先定义两个堆栈stack1和stack2,然后依次将1、2和3读取到第一个堆栈中,堆栈1的数据为1、2和3,然后使用pop方法将堆栈1的数据存储在堆栈2中在这种情况下,堆栈中的数据为3、2和1,堆栈2中的数据依次为pop

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。