Libpasc-algorithms هي Delphi ومكتبة Pascal كائن لهياكل البيانات الشائعة والخوارزميات. تعتمد المكتبة على مستودع C-algorithms وهي مجموعة من الحاويات التي تم تكييفها مع لغة Pascal ونظام القالب المتاح على ذلك.
تم اختبار المكتبة
احصل على المصادر وأضف دليل المصدر إلى مسار البحث عن المشروع. لـ FPC ، أضف دليل المصدر إلى ملف FPC.CFG .
استنساخ المستودع git clone https://github.com/isemenkov/libpasc-algorithms .
أضف الوحدة التي تريد استخدامها إلى شرط uses .
يتكون إطار الاختبار من المكونات التالية:
unit-tests .TarrayList هي صفائف عامة من T والتي تزيد تلقائيًا في الحجم.
uses
container.arraylist, utils.functor;
type
generic TArrayList<T, BinaryCompareFunctor> = classيعتمد BinaryCompareFunctor على واجهة utils.functor.tbinaryfunctor ويستخدم لمقارنة عنصرين صفيف. اللازمة للفرز والبحث عن وظائف البحث.
مزيد من التفاصيل قراءة على صفحة الويكي.
Tmultiarray هي مجموعة عامة من مجموعة T التي تزيد تلقائيًا في الحجم.
uses
container.multiarray, utils.functor;
type
generic TMultiArray<T, BinaryCompareFunctor> = classيعتمد BinaryCompareFunctor على واجهة utils.functor.tbinaryfunctor ويستخدم لمقارنة عنصرين صفيف. اللازمة للفرز والبحث عن وظائف البحث.
مزيد من التفاصيل قراءة على صفحة الويكي.
TsortedArray عبارة عن صفيف تغيير حجمه تلقائيًا يخزن عناصره بترتيب فرز. تحدد المستخدم Functor تحديد ترتيب الفرز. جميع العمليات على tsortedarray تحافظ على الممتلكات المرتبة. تتم معظم العمليات في وقت O (n) ، ولكن يمكن إجراء البحث في حالة O (log n) أسوأ.
uses
container.sortedarray, utils.functor;
type
generic TSortedArray<T, BinaryCompareFunctor> = classيعتمد BinaryCompareFunctor على واجهة utils.functor.tbinaryfunctor ويستخدم لمقارنة عنصرين صفيف. اللازمة لوظيفة البحث.
مزيد من التفاصيل قراءة على صفحة الويكي.
قائمة المرتبطة مضاعفة تخزن مجموعة من القيم. يحتوي كل إدخال في القائمة على رابط للإدخال التالي والإدخال السابق. لذلك من الممكن التكرار على الإدخالات في القائمة في أي من الاتجاهين.
uses
container.list, utils.functor;
type
generic TList<T, BinaryCompareFunctor> = classيعتمد BinaryCompareFunctor على واجهة utils.functor.tbinaryfunctor ويستخدم لمقارنة عناصر القائمة. اللازمة للفرز والبحث عن وظائف البحث.
مزيد من التفاصيل قراءة على صفحة الويكي.
هيكل شجرة AVL هو شجرة ثنائية متوازنة تخزن مجموعة من العقد. كل عقدة لديها مفتاح وقيمة مرتبطة به. يتم فرز العقد داخل الشجرة بناءً على ترتيب مفاتيحها. يتم بناء التعديلات على الشجرة بحيث تظل الشجرة متوازنة في جميع الأوقات (هناك دائمًا أعداد متساوية تقريبًا من العقد على جانبي الشجرة).
الأشجار الثنائية المتوازنة لها عدة استخدامات. يمكن استخدامها كخريطة (البحث عن قيمة بناءً على مفتاحها) ، أو كمجموعة من المفاتيح التي يتم طلبها دائمًا.
uses
container.avltree;
type
generic TAvlTree<K, V, KeyBinaryCompareFunctor> = classيعتمد KeyBinaryCompareFunctor على واجهة utils.functor.tbinaryfunctor ويستخدم لمقارنة مفتاحين.
مزيد من التفاصيل قراءة على صفحة الويكي.
يقوم جدول التجزئة بتخزين مجموعة من القيم التي يمكن معالجتها بواسطة مفتاح. بالنظر إلى المفتاح ، يمكن النظر في القيمة المقابلة بسرعة.
uses
container.hashtable, utils.functor;
type
generic THashTable<K, V, KeyBinaryCompareFunctor> = classيعتمد KeyBinaryCompareFunctor على واجهة utils.functor.tbinaryfunctor ويستخدم لمقارنة مفتاحين.
مزيد من التفاصيل قراءة على صفحة الويكي.
يخزن جدول التجزئة المتعدد مجموعة من القيم التي يمكن معالجتها بواسطة مفتاح. بالنظر إلى المفتاح ، يمكن النظر في القيمة المقابلة بسرعة.
uses
container.hashtable, container.multihash, utils.functor;
type
generic TMultiHash<K, V, KeyBinaryCompareFunctor, ValueBinaryCompareFunctor> = classيعتمد KeyBinaryCompareFunctor و ValueBinaryCompareFunctor على utils.functor.tbinaryfunctor واجهة ويستخدم لمقارنة مفتاحين.
مزيد من التفاصيل قراءة على صفحة الويكي.
مجموعة تخزن مجموعة من القيم. كل قيمة يمكن أن توجد مرة واحدة فقط في المجموعة.
uses
container.orderedset, utils.functor;
type
generic TOrderedSet<V, BinaryCompareFunctor> = classيعتمد BinaryCompareFunctor على واجهة utils.functor.tbinaryfunctor ويستخدم لمقارنة عنصرين.
مزيد من التفاصيل قراءة على صفحة الويكي.
نوع كومة. يتم تخزين القيم ذات أولوية أقل في الجزء العلوي من الكومة وستكون الأولى التي يتم إرجاعها.
uses
container.binaryheap, utils.functor;
type
generic TMinBinaryHeap<V, BinaryCompareFunctor> = classيعتمد BinaryCompareFunctor على واجهة utils.functor.tbinaryfunctor ويستخدم لمقارنة عنصرين.
مزيد من التفاصيل قراءة على صفحة الويكي.
نوع كومة. يتم تخزين القيم ذات الأولوية الأكبر في الجزء العلوي من الكومة وستكون الأولى التي تم إرجاعها.
uses
container.binaryheap, utils.functor;
type
generic TMaxBinaryHeap<V, BinaryCompareFunctor> = classيعتمد BinaryCompareFunctor على واجهة utils.functor.tbinaryfunctor ويستخدم لمقارنة عنصرين.
مزيد من التفاصيل قراءة على صفحة الويكي.
Trie هو بنية بيانات توفر تعيينات سريعة من الأوتار إلى القيم.
uses
container.trie;
type
generic TTrie<V> = classمزيد من التفاصيل قراءة على صفحة الويكي.
تخزن قائمة الانتظار المزدوجة قائمة من القيم بالترتيب. يمكن إضافة قيم جديدة وإزالتها من أي من طرفي قائمة الانتظار.
uses
container.queue;
type
generic TQueue<T> = classمزيد من التفاصيل قراءة على صفحة الويكي.
TmemoryBuffer هو بنية بيانات مفيدة لتخزين كتل الذاكرة التعسفية. إنه يضمن حذف كتلة الذاكرة عند تدمير الكائن. هذه الفئة تعتمد على WXWidgets WXMemoryBuffer API واجهة https://docs.wxwidgets.org/trunk/classwx_memory_buffer.html.
uses
container.memorybuffer;
type
TMemoryBuffer = classمزيد من التفاصيل قراءة على صفحة الويكي.