nadeen39
<embed src="http://www.xatech.com/web_gear/chat/chat.swf" quality="high" width="540" height="405" name="chat" FlashVars="id=71370411" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://xat.com/update_flash.shtml" /><br><small><a target="_BLANK" href="http://xat.com/web_gear/?cb">Get your own Chat Box!</a> <a target="_BLANK" href="http://xat.com/web_gear/chat/go_large.php?id=71370411">Go Large!</a></small><br>



انضم إلى المنتدى ، فالأمر سريع وسهل

nadeen39
<embed src="http://www.xatech.com/web_gear/chat/chat.swf" quality="high" width="540" height="405" name="chat" FlashVars="id=71370411" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://xat.com/update_flash.shtml" /><br><small><a target="_BLANK" href="http://xat.com/web_gear/?cb">Get your own Chat Box!</a> <a target="_BLANK" href="http://xat.com/web_gear/chat/go_large.php?id=71370411">Go Large!</a></small><br>

nadeen39
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.
nadeen39

nadeen39.yoo7.com

 

 

 

 

 

 

 

بحـث
 
 

نتائج البحث
 


Rechercher بحث متقدم

المواضيع الأخيرة
» ملحمة طاسة البوز
بُنى المعطيات - الرتل . Emptyالأربعاء ديسمبر 02, 2009 5:01 am من طرف sofean240

» طريقة ادخال الفلاش الى المنتدى
بُنى المعطيات - الرتل . Emptyالأحد سبتمبر 20, 2009 5:15 am من طرف نادين

» الموسيقا
بُنى المعطيات - الرتل . Emptyالجمعة سبتمبر 18, 2009 8:15 pm من طرف نادين

» بيت عنان
بُنى المعطيات - الرتل . Emptyالثلاثاء سبتمبر 15, 2009 9:40 pm من طرف نادين

» امسية شعرية في عبارة عيد الاشعب, دعوة عامة
بُنى المعطيات - الرتل . Emptyالثلاثاء سبتمبر 15, 2009 8:06 pm من طرف نادين

» مهد الحضارات
بُنى المعطيات - الرتل . Emptyالثلاثاء سبتمبر 15, 2009 8:04 pm من طرف نادين

» الورد...وما يليق بك
بُنى المعطيات - الرتل . Emptyالإثنين سبتمبر 07, 2009 4:29 am من طرف نادين

» مثلث برمودا
بُنى المعطيات - الرتل . Emptyالسبت سبتمبر 05, 2009 3:50 am من طرف نادين

» ابوزيد الهلالي
بُنى المعطيات - الرتل . Emptyالسبت سبتمبر 05, 2009 3:36 am من طرف نادين

ازرار التصفُّح
ازرار التصفُّح
مايو 2024
الأحدالإثنينالثلاثاءالأربعاءالخميسالجمعةالسبت
   1234
567891011
12131415161718
19202122232425
262728293031 

اليومية اليومية

تدفق ال RSS

Yahoo! 
MSN 
AOL 
Netvibes 
Bloglines 


سحابة الكلمات الدلالية

دخول

لقد نسيت كلمة السر



تسجيل صفحاتك المفضلة في مواقع خارجية
تسجيل صفحاتك المفضلة في مواقع خارجية reddit      

قم بحفض و مشاطرة الرابط nadeen39 على موقع حفض الصفحات

قم بحفض و مشاطرة الرابط nadeen39 على موقع حفض الصفحات

ازرار التصفُّح

أهلا وسهلا بك زائرنا الكريم, أنت لم تقم بتسجيل الدخول بعد! يشرفنا أن تقوم بالدخول أو التسجيل إذا رغبت بالمشاركة في المنتدى

بُنى المعطيات - الرتل .

اذهب الى الأسفل  رسالة [صفحة 1 من اصل 1]

1بُنى المعطيات - الرتل . Empty بُنى المعطيات - الرتل . الثلاثاء يوليو 28, 2009 5:13 pm

نادين

نادين
صاحبة المنتدى
صاحبة المنتدى

بنى المعطيات – الرَتل
Queue Data Structure

تعتبر الأرتال (Queues) أيضاً من بنى المعطيات الشهيرة , و خلافاً للمكدِّس فإن الأرتال تعتمد على المبدأ التالي :
(العنصر الذي يدخل أولاً يخرج أولاً) (First in frist out) , و لاستيعاب فكرة الرتل لن نحتاج لمثال بعيد عن متناولنا كثيراً , اذهب الآن لأي مركز خدمات أو حتّى فرن خبز
ستلاحظ وجود "طابور" أو رتل و بكل تأكيد يجب أن تقف آخر هذا الرتل ثم تنتظر دورك , الآن ما يحصل على هذا الطابور أو الرتل هو تماماً ما يحصل في بنية المعطيات هذه ; انظر الشكل :

بُنى المعطيات - الرتل . Queue1

ممتاز جدّاً , الآن في درس المكدَّس مثلنا المكدّس بالاعتماد على مصفوفة و استخدمنا متغيّراً ليدلنا على رقم العنصر العلوي من المكدّس , سنقوم بنفس الخطوات هنا تقريباً حيث سنمثّل الرتل بالاعتماد على مصفوفة و لكن سنستخدم متغيرين ليشير أحدهما إلى مقدمة أو الرتل (Front) و الآخر لذيل الرتل (Rear) .
بالتالي أصبح بامكاننا أن نكتب شيئاً قريباً مما يلي على افتراض أن الرتل سيحتوي عناصر من النوع Int و لن يزيد عددها عن 100 عنصر للسهولة .
كود
Int Queue[100];
Int front,rear;


هناك توابع للأرتال كما الحال مع المكدّسات و قد اصطلح المبرمجون تسميتها كما يلي :
Queue_init : تهيئة الرتل الجديد .
In_Queue : إضافة عنصر جديد للرتل .
Empty : للتحقق هل الرتل فارغ أم لا .
De_queue : لحذف آوّل عنصر من الرتل (رأس الرتل) .
Front : دالة تعيد أول عنصر من الرتل (رأس الرتل) .

بناء الدالة الأولى – دالة تهيئة الرتل :
لتهيئة الرتل أو تفريغه بمعنى آخر يكفي أن نجعل قيمة كل من rear و Front مساويةً لـ -1 مما يعني أنّه لا عناصر في الرتل ; انظر الشكل
بُنى المعطيات - الرتل . Queue2

و بالتالي أصبح يمكن كتابة هذه الدالة كما يلي :
كود
Void queue_init()
{
Front=rear=-1;
}

بناء الدالة الثانية – إضافة عنصر جديد للرتل :
كي نتمكن من إضافة عنصر جديد إلى الرتل سنقوم بزيادة Front بمقدار 1 ثم نضع القيمة ضمن queue ذات الفهرس Front مع مراعات ألّا يتجاوز Front الحد الأعلى لعدد عناصر الرتل .
كود
Void in_queue(int val)
{
If(front<100)
{
Fornt++;
Queue[front]=val;
}
}

بناء الدالة الثالثة – التحقق أن الرتل فارغ :
قلنا في الدالة الأولى أن الرتل يكون فارغ عندما Front=Rear = -1 و بالتالي يمكننا التحقق من هذا الشرط فقط كما يلي .
كود
Bool empty()
{
return (front==1- && rear==-1);
}


الدالة الرابعة – حذف عنصر من الرتل :
لحذف عنصر من الرتل يكفي أن نزيد قيمة الـ Rear بمقدار 1 (حذف ذيل الرتل) أو أن نقوم بإنقاص قيمة الـ Front بمقدار 1(حذف رأس الرتل) طبعاً مع مراعاة الشروط في كل حالة, سأكتب دالة حذف الرأس كمثال

كود
Void de_queue()
{
If(front>rear)
Front--;
}

الدالة الأخيرة – إعادة رأس الرتل :
بكل بساطة

كود
Int front()
{
Return queue[front];
}

كما قلت في نهاية درس المكدِّس سأقول في نهاية هذا الدرس , هذه مجرّد أفكار سريعة بالإمكان التطوير عليها بشكل كبير حيث أنها تهدف للتعليم و ليست احترافية بما فيه الكفاية لجعلك تعتمد هذه البنية بشكل نهائي , بالإمكان أيضاً بناء صف خاص يستخدم هذه الطرق و يتعامل مع الذاكرة بشكل ديناميكي لتحصل على بنية تستعملها لاحقاً في مشاريعك و تكون مستفيداً من كل ميزات البرمجة غرضية التوجه .
تم بحمد الله

لا تنسونا من صالح الدعاء

أخوكم :
مختار السيد صالح

https://nadeen39.yoo7.com

الرجوع الى أعلى الصفحة  رسالة [صفحة 1 من اصل 1]

صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى