السلطان
  1. الرئيسية
  2. الأمثلة
  3. المجموعات

كومة ثنائية مرتبة بدالة مقارنة

المهمة الأصغر أولا.

collections/priority_queue.sn
// كومة ثنائية مرتبة بدالة مقارنة: المهمة الأصغر أولا.
استورد std.io.println;
استورد std.text.number;
استورد std.collections.heap;

عرف حسب_الأولوية(اليسار: &عدد, اليمين: &عدد): عدد {
    أرجع *اليمين - *اليسار;
}

عرف الرئيسية(): عدد {
    دع المهام: متغير الكومة<عدد> = أنشئ_الكومة(حسب_الأولوية);
    أضف_إلى_الكومة(&متغير المهام, 5);
    أضف_إلى_الكومة(&متغير المهام, 1);
    أضف_إلى_الكومة(&متغير المهام, 9);
    أضف_إلى_الكومة(&متغير المهام, 3);
    دع مستمر: متغير منطقي = صواب;
    طالما (مستمر) {
        طابق خذ_قمة_الكومة(&متغير المهام) مع
        | اختياري.موجود(المهمة) -> { اطبع_سطر(عدد_إلى_نص(المهمة)); }
        | اختياري.لا_شيء -> { مستمر := خطأ; };
    }
    أرجع 0;
}

التشغيل

بالمفسر، دون ترجمة:

./build/sultanc run examples/ar/collections/priority_queue.sn

أو ترجمه إلى ملف تنفيذي:

./build/sultanc examples/ar/collections/priority_queue.sn -o build/example && ./build/example

المصدر على GitHub   كل الأمثلة