Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธี Implement Stack โดยใช้ Queue ใน Java

Stack เป็น subclass ของคลาส Vector และแสดงถึง stack ของออบเจ็กต์แบบ last-in-first-out (LIFO) องค์ประกอบล่าสุดที่เพิ่มเข้าไปที่ด้านบนของ stack (In) จะเป็นองค์ประกอบแรกที่ถูกนำออก (Out) จาก stack

Queue เป็นคลาสที่ extends Collection interface และรองรับการดำเนินการ insert และ remove แบบ first-in-first-out (FIFO) เราสามารถ implement Stack โดยใช้ Queue ได้ดังโปรแกรมด้านล่าง

ตัวอย่าง

import java.util.*;

public class StackFromQueueTest {
    Queue queue = new LinkedList<>();

    public void push(int value) {
        int queueSize = queue.size();
        queue.add(value);
        for (int i = 0; i < queueSize; i++) {
            queue.add(queue.remove());
        }
    }

    public void pop() {
        System.out.println("An element removed from a stack is: " + queue.remove());
    }

    public static void main(String[] args) {
        StackFromQueueTest test = new StackFromQueueTest();
        test.push(10);
        test.push(20);
        test.push(30);
        test.push(40);
        System.out.println(test.queue);
        test.pop();
        System.out.println(test.queue);
    }
}

Output

[40, 30, 20, 10]
An element removed from a stack is: 40
[30, 20, 10]