คำถาม: วิธีใช้สองสแต็กเพื่อใช้คิว กล่าวคือ สองวิธีในการใช้ Queue-appendTail (การแทรก) และ DeleteHead (การลบ)
การวิเคราะห์: แนวคิดหลักคือสแต็กหนึ่งจัดเก็บไว้ข้างหน้า และอีกสแต็กหนึ่งจะเก็บไปข้างหลัง สแต็กหน่วยเก็บข้อมูลแบบไปข้างหน้าใช้สำหรับการแทรก และใช้สแต็กหน่วยเก็บข้อมูลแบบย้อนกลับสำหรับการลบ
รหัส Java ที่นำมาใช้มีดังนี้:
คัดลอกรหัสรหัส ดังต่อไปนี้:
นำเข้า java.util.Stack;
QueneWithTwoStacks คลาสสาธารณะ <E> {
สแต็คส่วนตัว <E> stack1;
สแต็คส่วนตัว <E> stack2;
โมฆะสาธารณะต่อท้าย (E e) {
stack1.push(e);
-
สาธารณะ E DeleteHead () พ่นข้อยกเว้น {
ถ้า (stack2.size() <= 0) {
ในขณะที่ (!stack1.isEmpty()) {
stack2.push(stack1.pop());
-
-
ถ้า (stack2.size() == 0) {
โยนข้อยกเว้นใหม่ ("คิวว่างเปล่า!");
-
กลับ stack2.pop();
-
-