首页 > 编程知识 正文

栈和队列的进出规则,用两个栈实现一个队列

时间:2023-05-03 09:42:43 阅读:160347 作者:834

与队列和堆栈的概要区别Stack(堆栈):堆栈是后进先出(LIFO )的数据结构,只能在一端进行数据的插入(堆栈)或删除)操作。

stack使用java.util.stack类的生成方法创建对象。

堆栈还提供了一种执行堆栈操作的方法。

push(item )方法:可以将item推入堆栈。 pop ) )方法:可以删除堆栈顶部的对象,并将其用作函数的返回值。 peek ) )方法:堆栈顶部的对象empty ) )显示方法。 确定堆栈是否为空,如果为空,则返回1;否则返回0search(objectobject )方法。 更新返回搜索到的对象在堆栈中的位置http://ww.searct的队列时,请在不同的端对推入(入队)和弹出(出队)执行数据操作。

queue也用同样的方法进行团队操作。

add ) )和offer ) :这两种方法都将元素添加到队列中。 不同的是,如果向已满的队列中添加了元素,则调用add (调用方法时会抛出IIIegaISlabEepeplian exception,offer返回false,从而返回remove ) )和poll ) ) 这两个方法都是从队列中删除的第一个方法。不同之处在于,如果使用空队列,则remove ()方法会抛出nosuchelementexception (poll ) )返回空值。 element (和peek ) :这两个方法都是查询队列的第一个元素。 与上述不同,element方法在处理空队列时抛出NoSuchElementException,peek方法返回空值。 APP应用实例通过两个堆栈实现一个队列,完成队列推送和Pop操作。 队列中的元素是int类型。

import java.util.Stack; 公共类解决方案{ stackintegerstack1=newstackinteger (stackintegerstack2=newstackinteger (; publicvoidpush(intnode ) stack1.push ) node; } public int pop () if(stack1.empty ) (stack2.empty ) ) thrownewruntimeexception ) ' thestacksareempty ' ); (if ) stack2.empty ) ) { while (! stack1.empty () (stack2. push (stack1. pop ) ); } }返回堆栈2.pop (; }分析:入队操作与普通队列的add ()或offer )操作相同,只是对堆栈1执行堆栈操作。 然后,必须理解堆栈是先进先出的,队列是先进先出的。

因此,在出队操作时,需要删除stack1的数据并将其添加到stack2中。 在stack2中进行删除操作时,先进先出要素排在后面,根据队列的先进先出原理被删除。

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