与队列和堆栈的概要区别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中进行删除操作时,先进先出要素排在后面,根据队列的先进先出原理被删除。