LinkedList实现栈,队列

本文通过Java代码示例展示了如何使用LinkedList实现队列(先进先出、后进后出)和栈(先进后出、后进先出)的基本操作,并探讨了LinkedList在这些数据结构中的应用技巧。

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

import java.util.LinkedList;

public class LinkedListDemo2
{

    Object pop(LinkedList oo)
    {
        return oo.removeLast();
    }

    public static void main(String[] args)
    {
        LinkedListDemo2 aa = new LinkedListDemo2();
        LinkedList a1 = new LinkedList();

        System.out.println("-------以下是队列------------");
        aa.FiFo(a1);// 先进先出
        aa.LiLo(a1);// 后进后出
        System.out.println("-------以下是栈------------");
        aa.FiLo(a1, aa);// 先进后出
        aa.LiFo(a1, aa);// 后进先出
        /*
         * 其实感觉有点绕,像数据结构里的队列是:先进先出,后进后出。但是在java里,他的先进(addFirst)总是后加的元素在最前面(这与你希望的第一个在前面是相反的
         * ,因此给人错觉), 既然是后加的元素在前面,为了完成 先进先出,,,必须调用removeFirst()或者jdk里自带的pop()方法。
         *
         * 有一个我重写的pop方法,,,不知道各位有没有什么想法想和我说说,或者说我的想法错了,跟我说说。。。。我很期待。。。希望与大家多多交流 . Welcome to add
         * my QQ number:599013081.Thanks

         */
    }

    // 先进先出
    public void FiFo(LinkedList a1)
    {
        a1.addFirst("aaa");// addFirst()方法总是把后加进来的晕元素放在最前面。因此顺序如下所示:
        a1.addFirst("bbb");
        a1.addFirst("ccc");
        for (int i = 0; i < a1.size(); i++)
        {
            System.out.println("队列进入顺序:" + a1.get(i));
        }
        System.out.println("队列出去顺序:" + a1.removeFirst());
        System.out.println("队列出去顺序:" + a1.removeFirst());
        System.out.println("队列出去顺序:" + a1.removeFirst());
        System.out.println("*********************************");
    }

    // 后进后出
    public void LiLo(LinkedList a1)
    {
        a1.addLast("aaa");// addLast()方法总是把后加进来的元素放在最后面,因此打印结果如下所示:
        a1.addLast("bbb");
        a1.addLast("ccc");
        for (int i = 0; i < a1.size(); i++)
        {
            System.out.println("队列进入顺序:" + a1.get(i));
        }
        System.out.println("队列出去顺序:" + a1.removeFirst());
        System.out.println("队列出去顺序:" + a1.removeFirst());
        System.out.println("队列出去顺序:" + a1.removeFirst());// 数据结构正常的思维
    }

    public void FiLo(LinkedList a1, LinkedListDemo2 aa)
    {
        // 先进后出
        a1.addFirst("aaa");
        a1.addFirst("bbb");
        a1.addFirst("ccc");
        for (int i = 0; i < a1.size(); i++)
        {
            System.out.println("栈进入顺序:" + a1.get(i));
        }
        System.out.println("栈出去顺序:" + aa.pop(a1));
        System.out.println("栈出去顺序:" + aa.pop(a1));
        System.out.println("栈出去顺序:" + aa.pop(a1));
        System.out.println("*********************************");
    }

    public void LiFo(LinkedList a1, LinkedListDemo2 aa)
    {
        // 后进先出
        a1.addLast("aaa");
        a1.addLast("bbb");
        a1.addLast("ccc");
        for (int i = 0; i < a1.size(); i++)
        {
            System.out.println("栈进入顺序:" + a1.get(i));
        }
        System.out.println("栈出去顺序:" + aa.pop(a1));
        System.out.println("栈出去顺序:" + aa.pop(a1));
        System.out.println("栈出去顺序:" + aa.pop(a1)); // 数据结构正常的思维
    }

}


输出结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值