الأربعاء، 24 يوليو 2013

دورة الدوت نت الدرس(15): الفئتان Stack و Queue


دورة الدوت نت
الدرس(15): الفئتان Stack و Queue
 السلام عليكم ورحمة الله وبركاته
 موضوعنا لليوم خفيف وبسيط

الفئة Stack :
 يمكن تسمية الفئة Stack بالمكدسة وهي تطبق خوارزمية LIFO - Last In First Out

بمعنى آخر ما يدخل اول ما يخرج

 لنعرف كائن جديد من هذه الفئة :

كود:
              Dim stk As New Stack(Of String)
في السطر السابق صرحنا عن كائن جديد من نوع Stack وجعلناها مكدسة كائنات من النوع String

 طرق هذه الفئة - ليس جميعها - :

Push

 تفوم هذه الطريقة بعملية إضافة عنصر جديد للمكدسة:
كود:
stk.Push("Mohammed("
stk.Push("Lo2i")
stk.Push("Islam")




Pop

 تقوم هذه الطريقة بقراءة العنصر الأخير ومن ثم إزالته:
كود:
يصبح عدد العناصر بعد الازالة 2      WriteLine(stk.Pop) ' Islam
   يصبح عدد العناصر بعد الازالة 1      WriteLine(stk.Pop) ' Lo2i
   يصبح عدد العناصر بعد الازالة 0      WriteLine(stk.Pop) ' Mohammed


وبعد أن أصبحت المكدسة فارغة لو قمنا بعملية إزالة أخرى سيصدر خطأ لأن المكدسة فارغة...

Clear

 تقوم بإزالة جميع العناصر
كود:
              stk.Clear




Contains

 تقوم هذه الطريقة بالتحقق فيما إذا كانت القيمة الممرة لها محتواة داخل المكدسة أم لا
كود:
If stk.Contains("Lo2i") Then
 MsgBox("True")
 End If



CopyTo


 تقوم هذه الطريقة بنسخ عناصر المكدسة لمصفوفة مع تحديد رقم الفهرس من المصفوفة للبدء بالنسخ انطلاقا منه
كود:
Dim stk As New Stack(Of String(
stk.Push("Mohammed")
stk.Push("Lo2i")
stk.Push("Islam")
 
Dim A(2) As String
stk.CopyTo(A, 0(
For I = 0 To UBound(A(
WriteLine(A(I))
Next

 والناتج :
كود:
Islam
 Lo2i
 Mohammed
لاحظ أنه عند عملية النسخ لا يبدأ بالنسخ من الصفر بل من آخر عنصر وصولا لأول عنصر
 أيضا يجب الانتباه بألا تخرج عملية النسخ عن حدود المصفوفة

Count

 خاصية للقراءة فقط تعود بعدد عناصر المكدسة
كود:
              MsgBox(stk.Count( 



Peek

 تقوم هذه الطريقة بارجاع قيمة آخر عنصر دون حذف
كود:
                        stk.Peek 



ToArray


 تقوم بإرجاع مصفوفة بالعناصر الموجودة في المكدسة ويجب أن تكون من نفس النوع للمكدسة
كود:
              Dim strArray() As String = stk.ToArray 
الآن ننتهي من الفئة Stack

الفئة Queue:
 يمكن تسميتها بالطابور وتطبق مبدأ FIFO - First In First Out
 أي ما يضاف أولا يخرج أولا
 ويمكن تمثيل العملية بالشكل التالي :



 طرقها :

Enqueue

 تقوم هذه الطريقة بإضافة عنصر للطابور
كود:
        Dim que As New Queue(Of String(
         que.Enqueue("Mohammed")
         que.Enqueue("Lo2i")
         que.Enqueue("Islam" )


Dequeue

 تقوم هذه الطريقة بازالة العنصر الأول في الطابور
كود:
                                     que.Dequeue() 



 أما بالنسبة لباقي الطرق فلا تختلف كثيرا عن المكدسة


مع تحياتي :عبدالقادر البعداني

الي اللقاء في الدرس القادم.

ليست هناك تعليقات:

إرسال تعليق