دورة الدوت نت
الدرس(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()
أما بالنسبة لباقي الطرق فلا تختلف كثيرا عن المكدسة
مع تحياتي :عبدالقادر البعداني
الي اللقاء في الدرس القادم.
ليست هناك تعليقات:
إرسال تعليق