يعد المكدس أحد أهم هياكل البيانات في لغة Java ويجب أن يتضمن تنفيذه على الأقل الطرق التالية:
1.pop() عملية البوب، قم بإخراج العنصر العلوي من المكدس.
2.push (E e) عملية الدفع
3.peek() عرض العنصر العلوي للمكدس
4.isEmpty() هل المكدس فارغ؟
بالإضافة إلى ذلك، عند تنفيذ المكدس، يجب مراعاة العديد من المشكلات:
1. الحجم الأولي للمكدس وكيفية إضافة مساحة مكدس جديدة بعد امتلاء المكدس
2. المزامنة مطلوبة عند تحديث المكدس
مثال بسيط، باستخدام مصفوفة لتنفيذ مكدس، الكود كما يلي:
انسخ رمز الكود كما يلي:
مكدس الطبقة العامة<E> {
// Java لا تدعم المصفوفات العامة. إذا كنت بحاجة إلى استخدامها، فيرجى استخدام الحاوية التي توفرها Java.
كائن خاص[] مكدس؛
// الحجم الأولي الافتراضي للمكدس
نهائي ثابت خاص INIT_SIZE = 2؛
// كومة أعلى مؤشر
مؤشر كثافة العمليات الخاصة؛
publicStack() {
المكدس = كائن جديد [INIT_SIZE]؛
الفهرس = -1؛
}
/**
* طريقة البناء
*
* @param initSize
* الحجم الأولي للمكدس
*/
المكدس العام (int initSize) {
إذا (حجم الحرف < 0) {
رمي IllegalArgumentException () الجديد ؛
}
المكدس = كائن جديد[initSize];
الفهرس = -1؛
}
/**
* عملية البوب
*
*return الكائن العلوي للمكدس
*/
البوب العام المتزامن () {
إذا (!isEmpty()) {
درجة الحرارة الإلكترونية = نظرة خاطفة () ؛
المكدس[index--] = null;
درجة حرارة العودة؛
}
عودة فارغة؛
}
/**
* عملية دفع
*
* @param obj
* كائن ينتظر أن يتم دفعه إلى المكدس
*/
دفع الفراغ المتزامن العام (E obj) {
إذا (كامل ()) {
Object[] temp = stack;
// إذا كانت المكدس ممتلئة، فقم بإنشاء مكدس بضعف مساحة المكدس الحالية
المكدس = كائن جديد [2 * المكدس. الطول]؛
System.arraycopy(temp, 0, stack, 0, temp.length);
}
المكدس[++index] = obj;
}
/**
* عرض الكائن العلوي على المكدس
*
*return الكائن العلوي للمكدس
*/
نظرة خاطفة عامة () {
إذا (!isEmpty()) {
العودة (E) المكدس [الفهرس]؛
}
عودة فارغة؛
}
/**
* تحقق مما إذا كانت المكدس فارغة
*
* @return يُرجع صحيحًا إذا كان المكدس فارغًا، وإلا يُرجع خطأ
*/
المنطقية العامة فارغة () {
مؤشر الإرجاع == -1؛
}
/**
* التحقق من امتلاء المكدس
*
* @return يُرجع صحيحًا إذا كانت المكدس ممتلئًا، وإلا يُرجع خطأ
*/
منطقية عامة كاملة () {
مؤشر الإرجاع >= طول المكدس - 1؛
}
}
أخيرًا، يتم تنفيذ بنية بيانات المكدس (java.util.Stack) في Java، ويتم تنفيذها عن طريق وراثة فئة Vector في الظروف العادية.