Java 实现后进先出(LIFO)

本文介绍了一种使用Java的LinkedList来实现栈的数据结构方法。通过一个私有的内部类Node和一个引用变量top,创建了一个可以动态扩展的栈。文章详细解释了如何进行push、pop和peek等操作。

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

 
/*
 * Author: Eric Zhang
 * Created: 20074る11ら と 01:09:25
 * Modified: 20074る11ら と 01:09:25
 * For LIFO
 
*/

import  java.util. * ;

public   class  LinkedListStack  {

    
private static class Node {
        Object o;
        Node next;
    }


    
private Node top = null;
    
    
public boolean imEmpty() {
        
return top == null;
    }


    
public Object peek() {
        
if (top == null)
            
throw new EmptyStackException();
        
return top.o;
    }


    
public void push(Object o) {
        Node temp 
= new Node();
        temp.o 
= o;
        temp.next 
= top;
        top 
= temp;
        
//return o;
    }


    
public Object pop() {
        
if (top == null)
            
throw new EmptyStackException();
        
        Object o 
= top.o;
        top 
= top.next;
        
return o;
    }

    
    
public static void main(String args[]) {
        LinkedListStack o 
= new LinkedListStack();
        o.push(
"aa");
        o.push(
"bb");
        System.out.println(o.pop());
        o.push(
"cc");
        System.out.println(o.pop());
        System.out.println(o.pop());
        
    }

}
 

         LinkedListStack表明栈由一个私有的顶层嵌套类Node和一个私有引用变量top构成,引用变量top初始化为null表示一个空栈。相对于一维数组实现的栈,LinkedListStack并不需要一个构造器,因为它能够随着数据项的压入动态扩展。这样,void push(Object o)就不需要抛出FullStackException对象。然而,Object pop()还是需要检查栈是否为空的,这可能会导致可抛的EmptyStackException对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值