نحن نعلم أن المكدس عبارة عن حاوية بيانات تدخل أولاً وتخرج أخيرًا. عندما يكون تسلسل الإدخال للمكدس تسلسلًا متزايدًا (مثل a، b، c، d)، ويتم السماح بعملية المكدس أثناء عملية الدفع، فقد يكون لتسلسل الإخراج أشكال عديدة (مثل: d، c، b ، أ، أ، ج، ب، د، الخ.). ولكن بالتأكيد لن يكون هناك التسلسل المنبثق التالي: a، d، b، c أو d، a، b، c، إلخ. بافتراض أن تسلسل الإدخال هو تسلسل متزايد، يرجى كتابة خوارزمية لتحديد ما إذا كان تسلسل البوب الذي تمثله سلسلة الإدخال هو تسلسل البوب الصحيح. على سبيل المثال: إذا كان تسلسل أحرف الإدخال هو dcba، فإن القيمة المرجعة تكون صحيحة؛ وإذا كان تسلسل أحرف الإدخال هو adbc، فإن القيمة المرجعة تكون خاطئة.
كومة بسيطة:
الطبقة العامة SqStack {
حجم كثافة العمليات الخاصة؛
بيانات الكائن الخاص[]؛
أعلى كثافة العمليات الخاصة؛
عام سقستاك () {
هذا(50);
الحجم = 50؛
}
عام SqStack(حجم كثافة العمليات) {
this.size = size;
datas = كائن جديد [الحجم]؛
أعلى = -1؛
}
دفع الفراغ العام (بيانات الكائن) {
//...
}
كائن عام منبثق () {
//...
}
الكائن العام getTop () {
//...
}
المنطقية العامة فارغة () {
//...
}
}
المنطق المنطقي العام الثابت هوStackOutSequence(String str){
SqStack s=new SqStack();
for(int i=0;i<str.length();i++){
for(int j=i+1;j<str.length();j++){
إذا(str.charAt(j)<str.charAt(i)){
s.push(str.charAt(j));
}
بينما(!s.isEmpty(){
شار ج=(الحرف)s.pop();
إذا (!s.isEmpty()&&c>(الحرف)s.pop())
عودة كاذبة.
}
}
عودة صحيحة؛