栈的工作原理,后进先出。
栈,队列是比数组和其他数据结构更抽象的结构,主要通过接口对栈,队列进行定义,而他们的主要实 现机制对用户是不可见的。
栈的主要机制可以用数组来实现,也可以用链表来实现。优先级队列的内部 实现可以用数组或一种特殊的树(堆)来实现。 栈只允许访问一个数据项,即最后插入的数据项。
栈的应用,比如调用一个方法时,把它的返回地址和 参数压入栈,当方法结束返回时,那些数据出栈。
操作,new(新建)push(入栈),pop(出栈),peek(查看),isEmpty,top
入栈:如果栈满了,还想继续插入数据,就会报错,理论上,ADT定义的栈是不会满的,但数组实现的栈 会满。
出栈:栈空时,还想弹出一个数据项,就会报错。
java语言中,对栈来说,发现这些错误的一个好的方 法是抛出异常,异常可以被用户捕获并处理。
查看:只需要读取栈顶元素的值,而不移除它,这个数据没有出栈,而且只能查看栈顶元素。
栈的容量:栈通常很小,是临时的数据结构。
栈的效率:数据项入栈和出栈的时间复杂度都为常数O(1),即栈操作所耗费的时间不依赖于栈中数据项的 个数,因此操作时间很短。栈不需要比较和移动操作。
实战
对栈的元素进行排序: 一个栈中元素的类型为整形,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈,除此之外,可以申请新的变量来保存临时变量,但不能申请额外的数据结构。
代码操作如下:
输出结果如下:
java中的数据结构——栈
最新推荐文章于 2024-09-27 22:52:09 发布