Professional Documents
Culture Documents
هياكل بيانات محاضره 5 PDF
هياكل بيانات محاضره 5 PDF
هياكل بيانات محاضره 5 PDF
الطابور الدائري يسمح لكامل المصفوفة بخزن العناصر دون الحاجة الى تزحيف البيانات ضمن الطابور.
المصفوفة بالطابور الدائري تلتف حول نفسها مما يجعل مؤشر النهاية يتجاور مع مؤشر البداية ,هذا
يساعد على الوصول الى اول او اخر عنصر بشكل كفوء .بعد عملية الحذف فان المكان الفارغ في
في الطابور الخطي فان العناصر من الممكن ان تحشر او تضاف وذلك بزيادة مؤشر النهاية ,وعندما
يصل مؤشر النهاية الى الحجم االكبر وحتى وان تم حذف عناصر من مقدمة الطابور فان الطابور يعتبر
مألن .لذلك في الطابور الخطي اليمكن االستفادة من المصفوفة بشكل كامل .من جانب اخر ,في الطابور
الدائري فان مؤشر البداية يتجاور مع مؤشر النهاية وعليه فان الطابور الدائري يسمح لكامل المصفوفة
لخزن العناصر .الفائدة االساسية للطابور الدائري على الطابور الخطي هو امكانية استخدام فضاء
) if (front = = (rear+1) % maxاذا كانت هذه العالقة صحيحة فان ذلك يعني ان الطابور ممتليء واليوجد
فيه فراغ ,لذلك
.2اذا كانت العبارة في 1خاطئة ففي هذة الحالة يتم اضافة واحد الى مؤشر النهاية لتغيير موقعه
;Q[rear] = element
.4فحص مؤشر البداية فيما اذا كان في موقع , 1-اي ان الطابور فارغ ,عندها تغير قيمة المؤشر وذلك باضافة
واحد الى مؤشر البداية ومؤشر النهاية
.1بداية يتم فحص مؤشري البداية والنهاية فاذا كانت قيمة المؤشران تساوي ) (-1فان ذلك يعني ان الطابور
فارغ وبالتالي اليمكن حذف عنصر من طابور فارغ
))if ((front == rear) && (rear == -1
- Aفي هذه الحالة يتم طباعة رسالة خطأ للداللة على ان الطابور فارغ
.2في خالف ذلك ,اي اذا كان الطابور ليس بفارغ بمعنى ان العبارة في 1خاطئة ..عندها يتم حذف العنصر
الذي يؤشر علية مؤشر البداية
]element = Q[front
- Aاما ان يكون مؤشري البداية والنهاية متساويين عندها يتم مساواتهم للصفر ) هذا يعني ان الطابور يحتوي
على عنصر واحد فقط(
- Bاما اذا كان العبارة في ) (Aخاطئة اي ان الطابور يحتوي على اكثر من عنصر واحد عندها يضاف واحد
الى مؤشر البداية كما في ادناه
مثال:
بداية فان مؤشر البداية ومؤشر النهاية قيمتهم ) (-1اي ان الطابور فارغ
بدءا فان الطابور خالي ولذلك سنعمل على اضافة العناصر التالية 60 – 40 – 20
Front = 0
اما اذا لم تكن صحيحة فهذا يعني وجود عناصر في الطابور اي الطابور ليس فارغ.
في هذه الحالة فان ) (front = 0 && rear = 4اي غير متساويين) يعني العبارة خاطئة(
هنا يتم زيادة مؤشر البداية وبذلك فان العنصر الذي كان يؤشر عليه مؤشر البداية يتم حذفه وكمايلي
= (0 + 1) % 5
=1%5
Front = 1
لنحذف عنصر اخر نتبع نفس الطريقة
= (1 +1 ) % 5
=2%5
=2
int main ()
{
priority_queue <int> gquiz;
gquiz.push(10);
gquiz.push(30);
gquiz.push(20);
gquiz.push(5);
gquiz.push(1);
;return 0
}
من األمثلة على استخدام الطوابير ذات األولويات :
محاكاة لحركة الطائرات في المطار :
المتطلبات:
-يتم استخدام نفس المدرج لكل من عمليات الهبوط واإلقالع.
-تستطيع طائرة واحدة الهبوط أو اإلقالع في وحدة زمنية ،لكن ليس االثنين معا.
-يصل عدد معين من الطائرات في كل وحدة زمنية.
-الطائرة التي تنتظر الهبوط تستخدم المدرج قبل الطائرات التي تنتظر االقالع.
-يتم ادراج الطائرات التي تنتظر الهبوط واإلقالع في قوائم االنتظار (الطابور ) Queue
وصف المحاكاة :
الكائنات ( )Classesالالزمة لعملية المحاكاة :
• Runway class
العناصر –
قائمة انتظار الهبوط ،قائمة انتظار اإلقالع والمتغيرات األخرى •
حالة المدرج –
• الخمول ،الهبوط ،اإلقالع
• Plane_status class
وضع الطائرة –
مغادرة ,وصول • null,
• Initialization
– يحدد عدد الوحدات الزمنية في المحاكاة ،وأحجام قائمة االنتظار القصوى المسموح بها ،
ومعدالت الوصول والمغادرة المتوقعة للمطار