23-09-12, 06:28 PM
السلام عليكم ورحمة الله وبركاته
موضوعنا لليوم خفيف وبسيط
الفئة Stack :
يمكن تسمية الفئة Stack بالمكدسة وهي تطبق خوارزمية LIFO - Last In First Out
بمعنى أول ما يدخل أول ما يخرج
ويمكن تمثيل العملية بالشكل التالي
لنعرف كائن جديد من هذه الفئة :
في السطر السابق صرحنا عن كائن جديد من نوع Stack وجعلناها مكدسة كائنات من النوع String
طرق هذه الفئة - ليس جميعها - :
وبعد أن أصبحت المكدسة فارغة لو قمنا بعملية إزالة أخرى سيصدر خطأ لأن المكدسة فارغة...
تقوم هذه الطريقة بنسخ عناصر المكدسة لمصفوفة مع تحديد رقم الفهرس من المصفوفة للبدء بالنسخ انطلاقا منه
والناتج :
لاحظ أنه عند عملية النسخ لا يبدأ بالنسخ من الصفر بل من آخر عنصر وصولا لأول عنصر
أيضا يجب الانتباه بألا تخرج عملية النسخ عن حدود المصفوفة
تقوم بإرجاع مصفوفة بالعناصر الموجودة في المكدسة ويجب أن تكون من نفس النوع للمكدسة
الآن ننتهي من الفئة Stack
الفئة Queue:
يمكن تسميتها بالطابور وتطبق مبدأ FIFO - First In First Out
أي ما يضاف أولا يخرج أولا
ويمكن تمثيل العملية بالشكل التالي :
طرقها :
أما بالنسبة لباقي الطرق فلا تختلف كثيرا عن المكدسة
موضوعنا لليوم خفيف وبسيط
الفئة 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]
أما بالنسبة لباقي الطرق فلا تختلف كثيرا عن المكدسة