queue(7)

الاسم
queue - تطبيقات القوائم المترابطة والطوابير

الوصف
ملف الرأس <sys/queue.h> يوفر مجموعة من الماكرو التي تعرّف وتُشغّل بنى البيانات التالية:

SLIST
    قوائم مترابطة أحادية الاتجاه

القائمة
    قوائم مترابطة ثنائية الاتجاه

STAILQ
    طوابير ذيلية مترابطة أحادية الاتجاه

TAILQ
    طوابير ذيلية مترابطة ثنائية الاتجاه

CIRCLEQ
    طوابير دائرية مترابطة ثنائية الاتجاه

جميع البنى تدعم الوظائف التالية:

•   إدراج مدخل جديد في رأس القائمة.

•   إدراج مدخل جديد بعد أي عنصر في القائمة.

•   إزالة مدخل من رأس القائمة بزمن O(1).

•   الاجتياز الأمامي عبر القائمة.

حجم الكود ووقت التنفيذ يعتمدان على تعقيد بنية البيانات المستخدمة، لذا يجب على المبرمجين اختيار البنية المناسبة بعناية.

  قوائم مترابطة أحادية الاتجاه (SLIST)
القوائم المترابطة أحادية الاتجاه هي الأبسط وتدعم فقط الوظائف المذكورة أعلاه. هذه القوائم مثالية للتطبيقات ذات مجموعات البيانات الكبيرة وعمليات إزالة قليلة أو معدومة، أو لتنفيذ طابور LIFO. تضيف القوائم المترابطة أحادية الاتجاه الوظيفة التالية:

•   إزالة أي مدخل في القائمة بزمن O(n).

  طوابير ذيلية مترابطة أحادية الاتجاه (STAILQ)
الطوابير الذيلية المترابطة أحادية الاتجاه تضيف الوظائف التالية:

•   يمكن إضافة مدخلات في نهاية القائمة.

•   إزالة أي مدخل في القائمة بزمن O(n).

•   يمكن ربطها معًا.

مع ذلك:

•   جميع عمليات الإدراج في القائمة يجب أن تحدد رأس القائمة.

•   كل مدخل رئيسي يتطلب مؤشرين بدلاً من واحد.

الطوابير الذيلية المترابطة أحادية الاتجاه مثالية للتطبيقات ذات مجموعات البيانات الكبيرة وعمليات إزالة قليلة أو معدومة، أو لتنفيذ طابور FIFO.

  بنى بيانات مترابطة ثنائية الاتجاه
جميع أنواع هياكل البيانات ثنائية الربط (القوائم وقوائم الذيل) تسمح بالإضافة إلى ذلك بما يلي:

•   إدراج مدخل جديد قبل أي عنصر في القائمة.

•   إزالة أي مدخل في القائمة بزمن ثابت O(1).

مع ذلك:

•   يتطلب كل عنصر مؤشرين بدلاً من مؤشر واحد.

  القوائم ثنائية الربط (LIST)
القوائم المرتبطة هي أبسط هياكل البيانات ثنائية الربط. تُضيف الوظائف التالية على ما سبق:

•   يمكن اجتيازها بالاتجاه العكسي.

مع ذلك:

•   للاستعراض بالاتجاه العكسي، يجب تحديد مدخل لبدء الاجتياز والقائمة التي يحتوي عليها.

  قوائم الذيل ثنائية الربط (TAILQ)
تُضيف قوائم الذيل الوظائف التالية:

•   يمكن إضافة مدخلات في نهاية القائمة.

•   يمكن اجتيازها بالاتجاه العكسي، من الذيل إلى الرأس.

•   يمكن ربطها معًا.

مع ذلك:

•   يجب أن تُحدد جميع عمليات الإدراج والإزالة في القائمة رأس القائمة.

•   كل مدخل رئيسي يتطلب مؤشرين بدلاً من واحد.

  قوائم الانتظار الدائرية ثنائية الربط (CIRCLEQ)
تُضيف قوائم الانتظار الدائرية الوظائف التالية على ما سبق:

•   المدخل الأول والأخير متصلان.

مع ذلك:

•   شرط إنهاء الاجتياز أكثر تعقيدًا.

المعايير
BSD.

التاريخ
ظهرت وحدات الماكرو <sys/queue.h> لأول مرة في 4.4BSD.

ملاحظات
توفر بعض أنظمة BSD الماكرو SIMPLEQ بدلاً من STAILQ. وهما متطابقان، لكن لأسباب تاريخية سُمِّيَا بشكل مختلف في أنظمة BSD المختلفة. نشأ STAILQ في FreeBSD، ونشأ SIMPLEQ في NetBSD. لأسباب تتعلق بالتوافق، توفر بعض الأنظمة كلا المجموعتين من الماكروهات. توفر glibc كلاً من STAILQ و SIMPLEQ، وهما متطابقان باستثناء عدم وجود مكافئ في SIMPLEQ لـ STAILQ_CONCAT().

انظر أيضًا
circleq(3), insque(3), list(3), slist(3), stailq(3), tailq(3)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.