栈(Stack)的实现和基本操作

本文详细介绍了栈(Stack)的数据结构,其遵循后进先出(LIFO)原则,主要探讨了压入(push)、弹出(pop)及检查是否为空(empty)三种基本操作。文章还提供了一个使用Java的LinkedList实现栈的示例代码。
摘要由CSDN通过智能技术生成

栈(Stack)的实现和基本操作

栈实现的是一种后进先出(last-in, first-out, LIFO)的策略。
栈的三种基本操作:

  • 压入(push)
  • 弹出(pop)
  • 检查栈是否为空(empty)
    三种操作的执行时间都是o(1)

在java中的java.util.LinkedList能够直接实现栈的所有功能的方法,因此可以直接将LinkedList当作栈使用,并且比java.util.stack里的可取。

import java.util.LinkedList;
/**
 * Implement a Stack by LinkedList.
 * (the code excerpted from thinking in java fourth edition)
 */
public class MyStack<T> {
    private LinkedList<T> storage = new LinkedList<T>();
    public void push(T v) { storage.addFirst(v); }
    public T peek() { return storage.getFirst(); }
    public T pop() { return storage.removeFirst(); }
    public boolean empty() {return storage.isEmpty(); }
    public String toString() { return storage.toString(); }
	
	// test
    public static void main(String[] args) {
        MyStack<String> stack = new MyStack<>();
        for(String s : "My dog has fleas".split(" ")) {
            stack.push(s);
        }
        while(!stack.empty())
            System.out.print(stack.pop() + " ");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值