سؤال: كيفية استخدام مكدسين لتنفيذ قائمة انتظار، أي طريقتان لتنفيذ queue-appendTail (الإدراج) وdeleteHead (الحذف).
التحليل: الفكرة الأساسية هي أن أحد المكدسات يخزن للأمام بينما يخزن المكدس الآخر للخلف. يتم استخدام مكدس التخزين الأمامي للإدراج، ويتم استخدام مكدس التخزين العكسي للحذف.
كود Java المطبق هو كما يلي:
انسخ رمز الكود كما يلي:
import java.util.Stack;
فئة عامة QueneWithTwoStacks<E> {
مكدس خاص <E> مكدس 1 ؛
مكدس خاص <E> مكدس 2 ؛
إلحاق الفراغ العام (E e) {
Stack1.push(e);
}
EdeleteHead() العام يطرح استثناء {
إذا (stack2.size() <= 0) {
بينما (!stack1.isEmpty()) {
Stack2.push(stack1.pop());
}
}
إذا (stack2.size() == 0) {
رمي استثناء جديد("قائمة الانتظار فارغة!");
}
إرجاع المكدس 2.pop();
}
}