تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الفصل(15): الفئتان Stack و Queue
#1
السلام عليكم ورحمة الله وبركاته
موضوعنا لليوم خفيف وبسيط

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



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

كود :
[color=#000000] [COLOR=#0000BB]Dim stk [/color][color=#007700]As New [/color][color=#0000BB]Stack[/color][color=#007700]([/color][color=#0000BB]Of String[/color][color=#007700])  [/color][/COLOR]

في السطر السابق صرحنا عن كائن جديد من نوع Stack وجعلناها مكدسة كائنات من النوع String


طرق هذه الفئة - ليس جميعها - :
  • Push
تفوم هذه الطريقة بعملية إضافة عنصر جديد للمكدسة:
كود :
[color=#000000][COLOR=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Push[/color][color=#007700]([/color][color=#DD0000]"Mohammed"[/color][COLOR=#007700])
[/COLOR][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Push[/color][color=#007700]([/color][color=#DD0000]"Lo2i"[/color][COLOR=#007700])
[/COLOR][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Push[/color][color=#007700]([/color][color=#DD0000]"Islam"[/color][COLOR=#007700])
[/COLOR][/COLOR]


  • Pop
تقوم هذه الطريقة بقراءة العنصر الأخير ومن ثم إزالته:
كود :
[color=#000000][COLOR=#0000BB]يصبح عدد العناصر بعد الازالة 2      WriteLine[/color][color=#007700]([/color][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Pop[/color][color=#007700]) [/color][COLOR=#DD0000]' Islam
   يصبح عدد العناصر بعد الازالة 1      WriteLine(stk.Pop) ' [/COLOR][COLOR=#0000BB]Lo2i
   يصبح عدد العناصر بعد الازالة 0      WriteLine[/COLOR][color=#007700]([/color][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Pop[/color][color=#007700])  [/color][COLOR=#0000BB]Mohammed
[/COLOR][/COLOR]
[COLOR=#000000][COLOR=#0000BB]
[/COLOR][/COLOR]

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

  • Clear
تقوم بإزالة جميع العناصر
كود :
[color=#000000] [COLOR=#0000BB]stk[/color][color=#007700].[/color][COLOR=#0000BB]Clear
[/COLOR][/COLOR]



  • Contains
تقوم هذه الطريقة بالتحقق فيما إذا كانت القيمة الممرة لها محتواة داخل المكدسة أم لا
كود :
[color=#000000][COLOR=#007700]If [/color][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Contains[/color][color=#007700]([/color][color=#DD0000]"Lo2i"[/color][color=#007700]) [/color][COLOR=#0000BB]Then
MsgBox[/COLOR][color=#007700]([/color][color=#DD0000]"True"[/color][COLOR=#007700])
[/COLOR][color=#0000BB]End [/color][COLOR=#007700]If
[/COLOR][/COLOR]


  • CopyTo

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


والناتج :
كود :
Islam
Lo2i
Mohammed

لاحظ أنه عند عملية النسخ لا يبدأ بالنسخ من الصفر بل من آخر عنصر وصولا لأول عنصر
أيضا يجب الانتباه بألا تخرج عملية النسخ عن حدود المصفوفة
  • Count
خاصية للقراءة فقط تعود بعدد عناصر المكدسة
كود :
[color=#000000] [COLOR=#0000BB]MsgBox[/color][color=#007700]([/color][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]Count[/color][COLOR=#007700])  
[/COLOR][/COLOR]


  • Peek
تقوم هذه الطريقة بارجاع قيمة آخر عنصر دون حذف
كود :
[color=#000000] [COLOR=#0000BB]stk[/color][color=#007700].[/color][COLOR=#0000BB]Peek  
[/COLOR][/COLOR]


  • ToArray

تقوم بإرجاع مصفوفة بالعناصر الموجودة في المكدسة ويجب أن تكون من نفس النوع للمكدسة
كود :
[color=#000000] [COLOR=#0000BB]Dim strArray[/color][color=#007700]() As [/color][color=#0000BB]String [/color][color=#007700]= [/color][color=#0000BB]stk[/color][color=#007700].[/color][color=#0000BB]ToArray  [/color][/COLOR]

الآن ننتهي من الفئة Stack

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



طرقها :
  • Enqueue
تقوم هذه الطريقة بإضافة عنصر للطابور
كود :
[color=#000000][COLOR=#0000BB]        Dim que [/color][color=#007700]As New [/color][color=#0000BB]Queue[/color][color=#007700]([/color][color=#0000BB]Of String[/color][COLOR=#007700])
         [/COLOR][color=#0000BB]que[/color][color=#007700].[/color][color=#0000BB]Enqueue[/color][color=#007700]([/color][color=#DD0000]"Mohammed"[/color][COLOR=#007700])
         [/COLOR][color=#0000BB]que[/color][color=#007700].[/color][color=#0000BB]Enqueue[/color][color=#007700]([/color][color=#DD0000]"Lo2i"[/color][COLOR=#007700])
         [/COLOR][color=#0000BB]que[/color][color=#007700].[/color][color=#0000BB]Enqueue[/color][color=#007700]([/color][color=#DD0000]"Islam"[/color][COLOR=#007700])
[/COLOR][/COLOR][color=#000000][COLOR=#007700] [/color][/COLOR]

  • Dequeue
تقوم هذه الطريقة بازالة العنصر الأول في الطابور
كود :
            [color=#000000] [COLOR=#0000BB]que[/color][color=#007700].[/color][color=#0000BB]Dequeue[/color][color=#007700]()  [/color][/COLOR][COLOR=#000000][COLOR=#007700]
[/COLOR][/COLOR]



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




الرد }}}
تم الشكر بواسطة:
#2
اولا اخي العزيز الفصل (14 ) غير موجود
اما لانه محذوف او انكم اخطأتم في وضع الارقام
************
وبارك الله فيكم على المجهودات الطيبة
الرد }}}
تم الشكر بواسطة:
#3
بارك الله فيك
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  الفصل(8): الدوال والاجراءات B3dak Hbebe 3 19,655 15-08-18, 09:20 AM
آخر رد: nagoma
  الفصل(9):مدخل الى الفئاتClasses - الجزء الأول B3dak Hbebe 5 4,326 30-05-17, 01:09 PM
آخر رد: ali hussein
  الفصل(5):صنع القرار...الجزء الأول-الجمل الشرطية Omar Mekkawy 4 4,165 10-08-13, 05:39 PM
آخر رد: Omar Mekkawy
  الفصل(3): التركيبات أنواعها واستخداماتها Omar Mekkawy 4 4,154 10-08-13, 05:32 PM
آخر رد: Omar Mekkawy
  الفصل (1) : الفيجوال بيسك دوت نت (لمحة تعريفية) Omar Mekkawy 2 3,491 27-07-13, 02:39 PM
آخر رد: green.grass52
  الفصل (0) : دورة تعلم معنا فيجوال بيسك دوت نيت Omar Mekkawy 7 4,821 18-07-13, 06:29 PM
آخر رد: el@nsary
  الفصل(16): مدخل لمسارات التنفيذ Threading B3dak Hbebe 3 3,776 27-04-13, 10:58 AM
آخر رد: خليل اسماعيل
  الفصل(12): Oop بالتفصيل...الجزء الثاني B3dak Hbebe 3 3,899 27-04-13, 09:16 AM
آخر رد: خليل اسماعيل
  الفصل (11) :oop بالتفصيل ..الجزء الاول Easy4ever 3 3,568 27-04-13, 09:08 AM
آخر رد: خليل اسماعيل
  الفصل(10):مدخل الى الفئات..الجزء الثاني B3dak Hbebe 2 3,203 27-04-13, 08:59 AM
آخر رد: خليل اسماعيل

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم