用两个栈来实现一个队列

本文介绍了一种使用两个栈来实现队列的方法,通过在其中一个栈进行元素的压入,在另一个栈进行元素的弹出,从而实现了队列的先进先出特性。具体实现包括在MyList类中定义两个栈,并提供了appendTail和deleteHead方法。

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

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
首先定义一个MyList类,
声明两个栈,
类中有两个方法,appendTail和deleteHead,
appendTail实现在队列尾部插入节点的操作
只需在stack1中压栈即可
deleteHead方法首先需要判断弹出栈是否为空如果为空就将插入栈的所有数据弹出并将弹出的数据压入栈中
如果弹出栈中没有数据抛出允许一次
返回弹出栈的栈顶元素,对应的就是队首元素

package com.helan.a;

import java.util.Stack;

public class StackQueue {
    public static class MyList<T> {
        private Stack<T> stack1 = new Stack<T>();
        private Stack<T> stack2 = new Stack<T>();

        public void appendTail(T t) {
            stack1.add(t);
        }

        public T deleteHead() {
            if (stack2.isEmpty()) {
                while (!stack1.isEmpty()) {
                    stack2.add(stack1.pop());
                }
            }
            if (stack2 == null) {
                throw new RuntimeException("没有元素");
            }
            return stack2.pop();
        }
    }
    public static void main(String[] args) {
        MyList<Character> queue=new MyList<>();
        queue.appendTail('a');
        queue.appendTail('b');
        queue.appendTail('c');

        char head=queue.deleteHead();
        System.out.println(head);
        char head1=queue.deleteHead();
        System.out.println(head1);

        queue.appendTail('d');
        head = queue.deleteHead();
        System.out.println(head);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值