Java栈中的pop函数_栈的简单介绍和使用(Java)

本文详细介绍了 Java 中 Stack 类的使用方法及其内部实现机制,包括基本操作如 push、pop 和 peek 等,并通过实例展示了如何利用 Stack 解决实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Stack是Vector的一个子类,它实现了一个标准的后进先出的栈。

Stack的继承图:

c1015a49f3af

image.png

Stack的源码:

public class Stack extends Vector {

public Stack() {

}

public E push(E item) {

addElement(item);

return item;

}

public synchronized E pop() {

E obj;

int len = size();

obj = peek();

removeElementAt(len - 1);

return obj;

}

public synchronized E peek() {

int len = size();

if (len == 0)

throw new EmptyStackException();

return elementAt(len - 1);

}

public boolean empty() {

return size() == 0;

}

public synchronized int search(Object o) {

int i = lastIndexOf(o);

if (i >= 0) {

return size() - i;

}

return -1;

}

/** use serialVersionUID from JDK 1.0.2 for interoperability */

private static final long serialVersionUID = 1224463164541339165L;

}

方法说明:

1、boolean empty(): 测试堆栈是否为空。

2、Object peek( ):查看堆栈顶部的对象,但不从堆栈中移除它。

3、Object pop( ):移除堆栈顶部的对象,并作为此函数的值返回该对象。

4、Object push(Object element):把项压入堆栈顶部。

5、int search(Object element):返回对象在堆栈中的位置,以 1 为基数。

简单实用,代码如下:

package com.algorithm.demo;

import java.util.EmptyStackException;

import java.util.Stack;

public class StackDemo {

static void showpush(Stack st, int a) {

st.push(new Integer(a));

System.out.println("push(" + a + ")");

System.out.println("stack: " + st);

}

static void showpop(Stack st) {

System.out.print("pop -> ");

Integer a = (Integer) st.pop();

System.out.println(a);

System.out.println("stack: " + st);

}

public static void main(String args[]) {

Stack st = new Stack();

System.out.println("stack: " + st);

showpush(st, 42);

showpush(st, 66);

showpush(st, 99);

showpop(st);

showpop(st);

showpop(st);

try {

showpop(st);

} catch (EmptyStackException e) {

System.out.println("empty stack");

}

}

运行结果:

stack: []

push(42)

stack: [42]

push(66)

stack: [42, 66]

push(99)

stack: [42, 66, 99]

pop -> 99

stack: [42, 66]

pop -> 66

stack: [42]

pop -> 42

stack: []

pop -> empty stack

栈的一个小算法应用:

栈还是有他自己的特点的,他也有很多应用,比如在我们的编译原理的课本上给就说过,给定一个字符串表达式通过两个栈来计算这个表达式的值,比如“1+3*(3+6-1)+6”类似于这种的式子,通过符号和数字的压入和弹出,可以计算这个式子,总之合理利用栈,对我们的帮助是非常大的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值