تراكيب البيانات
Download
Report
Transcript تراكيب البيانات
قسم علوم الحاسوب و تكنولوجيا المعلومات
تخصص دبلوم البرمجيات و قواعد البيانات
تراكيب البيانات
الوحدة السادســة
هيكل البيانات Queue
المادة العلمية إعداد
http://mfarra.cst.ps
أ .محمود رفيق الفـــرَّ ا
مدرس المساق /أ .محمود رفيق الفـــرَّ ا
2010-2011
محاور المحاضرة
2
ما هـو الطابور ؟
عملية اإلضافة Inqueue operation
عملية الحذف Dequeue operation
عرض بيانات عنصر ما
إفراغ الـ Queue
طباعة العناصر
البحث عن عنصر ما
ترتيب العناصر باستخدام Bubble Sort
مساق تراكيب البيانات
()Queue
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
بذكرك ربنـا نحيــا
3
الذكر إذا أكل اإلنسان عند آخرين
الله َّم با ِرك لَهم فيما رَزقتهم ،واغ ِ
مهم
وارح
لهم
ر
ف
َ ُ
ُ َ ُ
َ
عنْ عبد هللا بن بسر رضي هللا عنها قال ( :نزلل رسزول هللا صزل هللا عليزل وسزلم علز أبزي فقربنزا إليزل
طعاما فأكل منل ثم أتي بتمر فكان يأكل ويلقزي النزوب ببصزبعيل جمزس السزبابة والوسزط قزال شزعبة وهزو
ظني فيل إن شاء هللا وألق النوب بين أصبعين ثم أتي بشراب فشربل ثم ناولل الزذ عزن يمينزل قزال فقزال
أبي وأخذ بلجام دابتل ادع لنا فقال اللهم بارك لهم فيما رلقتهم واغفر لهم وارحمهم ) صحيح الترمذ
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
ما هـو الطابور؟ Queue
4
الطابور عبارة عن هيكلية بيانات يتم فيها تخلين عدد من العناصزر
بالطريقززة ذاتهززا التززي نتعامززل فيهززا مززس طوابيرنززا فززي حياتنزا اليوميززة,
حيززث تززتم اإلضافززـة فززي خلززف الطززابور فقززط ,بينمززا يززتم الحزذف مززن
مقدمة الطابور.
Front
Ghadeer
Rear
Mohamed
Ali
Ahmed
Hussam
ما هـو الطابور؟ Queue
5
و للطابور ثالث عمليات أساسيـة هي:
إضافة عناصر جديدة :و تتم إضزافة العناصزر هزذي فزي نهايزة الطزابور و
تعرف العملية باسم InQueueعند المؤشر .Front
حذف عناصر :و تتم حذف العناصزر مزن مقدمزة الطزابور و تعزرف هزذي
العملية باسم DeQueueعند المؤشر . Rear
عرض معلومات العنصر األول :و تعرف هذي العملية باسم .Peek
ما هـو الطابور؟ Queue
6
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
ما هي عناصر الطابور؟
7
يتكون الطابور من عناصر مماثلة تماما لعناصر القائمة و المكدس,
و ال يوجد فروق أبدا بينهما سوب العمليات التي يسمح بالقيام بها.
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
من اللبائنQueue عناصر
8
1. class Customer {
2.
public int parts;
3.
public int amount;
4.
public String name;
5.
public Customer next;
6.
public Customer() {
7.
parts = 0;
8.
amount = 0;
9.
name = "no name"; }
10.
public Customer(int parts, int amount, String name) {
11.
this.parts = parts;
12.
this.amount = amount;
13.
this.name = name; } }
محمود رفيق الفــرَّ ا. أ/المادة العلمية إعداد
مساق تراكيب البيانات
من اللبائنQueue بناء
9
1. class QueueOfCustomer {
2.
public Customer Front;
3.
public Customer Rear;
4.
public int length;
5.
public QueueOfCustomer()
6.
{
7.
Front = null;
8.
Rear = null;
9.
length = 0;
10.
}
11.
// ... هنا يتم إضافـة عمليات المعالجة من حذف و إضافة
12. }
محمود رفيق الفــرَّ ا. أ/المادة العلمية إعداد
مساق تراكيب البيانات
عملية اإلضافة EnQueue Operation
10
إضافة أ عنصر يتم من خالل التالي:
جعل مؤشر العنصر الجديد يشير إل ما يشير لل المؤشر Rear
جعل المؤشر Rearيشير إل العنصر الجديد.
Rear
X
Front
2
New item
Ghadeer
مساق تراكيب البيانات
Mohamed
Ali
1
Ahmed
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
EnQueue Operation عملية اإلضافة
11
1.
public void InQueue(Customer addCus)
2.
{
3.
Customer newc = addCus;
4.
if (Front == null)
5.
{
6.
Front = newc;
7.
Rear = newc;
8.
newc.next = null;
9.
}
10.
else
11.
{
12.
newc.next = Rear;
13.
Rear = newc;
14.
}
15.
length++;
16.
Console.WriteLine("The new Object is added: "+length);
17.
}
محمود رفيق الفــرَّ ا. أ/المادة العلمية إعداد
مساق تراكيب البيانات
عملية الحذف DeQueue operation
12
حذف العنصر يتم من خالل التالي:
جعل Frontيشير إل العنصر التالي للعنصر األول.
Front
Ghadeer
مساق تراكيب البيانات
current
Mohamed
Rear
Ali
Ahmad
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
DeQueue operation عملية الحذف
13
1. public void DeQueue() {
2.
if (Front == null)
3.
Console.WriteLine("The Queue is Empty!!");
4.
else
5.
{
6.
Customer current;
7.
Customer pre_current = Rear;
8.
for (current = Rear; current.next != null; current = current.next)
9.
pre_current = current;
10.
Front = pre_current;
11.
length--;}
12.
}
محمود رفيق الفــرَّ ا. أ/المادة العلمية إعداد
مساق تراكيب البيانات
عملية عرض بيانات العنصر األخير Peek
14
تعزززرف عمليزززة عزززرض البيانزززات للعنصزززر األول( أول عنصزززر تزززم
إضافتل) ما بـ .Peek
و هذا العنصر مشار إليل بالمؤشـر Front
Front.name
front.salary
…
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
Peek عملية عرض بيانات العنصر األخير
15
1.
2.
3.
4.
5.
6.
7.
8.
public void Peek()
{
if (Front == null)
Console.WriteLine("The Queue is empty");
else
Console.WriteLine("The Data of the first is:\n "+
Front.name +"\n "+Front.amount+"\n "+Front.parts);
}
محمود رفيق الفــرَّ ا. أ/المادة العلمية إعداد
مساق تراكيب البيانات
أشكركم
16
السؤال مفتاح للعلوم كلها...
تذكر أن نيوتن عندما سأل لماذا وقعت التفاحـة وصل إل قوانين الجاذبيــة ...
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
بذكرك ربنـا نحيــا
17
الدعاء لمن أسقاني أو أطعمني
الله َّم أ ِ
أطع َمني وأَس ِق َمن س َقاني
ن
م
م
َطع
ُ
َ َ
عنْ أبي هريرة رضي هللا عنل قال ,قال رسول هللا صل هللا عليزل وسزلم ( :إذا اسزتيقظ
و أذن لزي بزذكري)
أحدكم فليقل :الحمد هلل الذ رد علي روحي وعافزاني فزي جسزد
حسـنـَّـل األلباني
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
عملية إفراغ كافة عناصر الـ Queue
18
إفراغ كافة عناصر الطزابور ببسزاطة جعزل المؤشزر Rearال يشزير
لهززذي العناصززر و بززذلك تصززبح الكائنززات (العناصززر) غيززر مسزتعملة,
مما يجعلها تحذف تلقائيـا من الذاكرة.
)(1. public void Clear
2.
{
3.
)if (Rear == null
4.
;)"!!Console.WriteLine("The Queue is Empty
5.
else
6.
;Rear = null
7.
;Length = 0
8.
}
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
عملية طباعة عناصر الـ Queue
19
لطباعة عناصر الطابور
نستحدث مؤشر يبدأ من حيث يشير Rearو ينتقل شيئا فشزيئا و فزي كزل
دورة من التكرار نقوم بطباعة قيم العناصر.
Rear current
Front
Ahmed
مساق تراكيب البيانات
Ghadeer
Mohamed
Ali
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
Stack عملية طباعة عناصر الـ
20
1. public void PrintAll()
2.
{
3.
Customer current;
4.
for (current = Rear; current != null; current = current.next)
5.
{
6.
Console.WriteLine(" ========================== ");
7.
Console.WriteLine("The Data of the element is:\n " +
8.
current.name + "\n " + current.amount + "\n " + current.parts);
9.
Console.WriteLine(" ========================== ");
10.
}
11.
}
محمود رفيق الفــرَّ ا. أ/المادة العلمية إعداد
مساق تراكيب البيانات
البحث عن عنصر ما
21
البحث كما تعلمنا سابقا قد يزتم بزأكثر مزن طريقزـة ,و جمزيعهم يعتمزد
علز وجززود تكززرار يتحززرك مززن خززالل وجززود مؤشززر يبززدأ مززن حيززث
يوجد المؤشر Rear
Rear current
Front
Ahmed
مساق تراكيب البيانات
Ghadeer
Mohamed
Ali
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
البحث عن عنصر ما
22
1. public void SearchByAmount(int amount)
2.
{
3.
Customer current = Rear;
4.
bool flag = false;
5.
while (current != null)
6.
{
7.
if (current.amount == amount)
8.
{
9.
flag = true;
10.
break;
11.
}
12.
current = current.next;
13.
}
14.
if (flag == true)
15.
Console.WriteLine("The element is exist!! ");
16.
else
17.
Console.WriteLine("The element does not exist!! ");
18.محمود رفيق الفــرَّ ا
} . أ/المادة العلمية إعداد
مساق تراكيب البيانات
أشكركم
23
السؤال مفتاح للعلوم كلها...
تذكر أن نيوتن عندما سأل لماذا وقعت التفاحـة وصل إل قوانين الجاذبيــة ...
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
بذكرك ربنـا نحيــا
24
الذكر عند االنتهاء من الطعام
الحمددهلل ح حمددهللا ا ي درا طيرددا مراراددا في د غيددر مددع و و
مستغنى عن ربنا
عن أبزي أمامزة رضزي هللا عنزل قزال( :كزان رسزول هللا صزل هللا عليزل وسزلم إذا رفعزت
المائدة من بين يديل يقول الحمد هلل حمدا كثيرا طيبا مباركا فيل غير مودع وال مستغن
صحيح الترمذ
عنل ربنا)
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
ترتيب العناصر باستخدام bubble Sort
25
ترتيزب عناصزر الطزابور ,باسزتخدام خوارلميزة bubble sortتزتم
من خالل استحداث مؤشرين (متغيرين) يتحركا مس الطابور ليقارنا
القيم و يقوما بعمليات االستبدال.
current
Front
Ahmed
مساق تراكيب البيانات
Ghadeer
Mohamed
Pre
Rear
Ali
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا
bubble Sort ترتيب العناصر باستخدام
26
1. public void BubSort() {
2.
for (int i = 0; i < length; i++) {
3.
Customer current = Rear;
4.
Customer Pre = Rear.next;
5.
while (current.next != null) {
6.
if (current.amount > Pre.amount) {
7.
int TempAmount = current.amount;
8.
String Tempname = current.name;
9.
int TempParts = current.parts;
10.
current.amount = Pre.amount;
11.
current.name = Pre.name;
12.
Pre.amount = TempAmount;
13.
Pre.name = Tempname;
14.
current.parts = Pre.parts;
15.
Pre.parts = TempParts; }
16.
current = current.next;
17.
Pre = Pre.next; } } }
محمود رفيق الفــرَّ ا. أ/المادة العلمية إعداد
مساق تراكيب البيانات
أشكركم
27
السؤال مفتاح للعلوم كلها...
تذكر أن نيوتن عندما سأل لماذا وقعت التفاحـة وصل إل قوانين الجاذبيــة ...
مساق تراكيب البيانات
المادة العلمية إعداد /أ .محمود رفيق الفــرَّ ا