منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : هياكل البيانات Data Structures المكدس Stack: الجزء الثاني
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
[COLOR="#000080"]بسم الله الرحمن الرحيم

كنت قد تكلمت عن الصف QUEUE في هذا الموضوع
هياكل البيانات Data Structures الصف Queue : الجزء الاول

وساتكلم هنا عن المكدس Stack وهو احد بنى المعطيات وذلك لما له من فائدة في الاستخدام البرمجي

اولا:
ما هو المكدس Stack ؟
هو عبارة عن مصفوفة تحوي اي نوع من البيانات تقوم انت بتحديده ولكنها تتميز بأنها تتبع اسلوب ال LIFO والذي يعني Last In First Out او الداخل اخيرا خارج اولا
اي انه لا يمكنك اخد الا العنصر الاخير منها وبعدما تاخذه رح ينحذف من المكدس

وهو يشبه العلبة اي ان ما يتم اضافته اخيرا يتم سحبه اولا
مثلا اذا وضعنا اغراض بعلبة ما فانك لن تستطيع ازالة الغرض الاول الذي وضعته الا بعد ازالة جميع الاغراض التي فوقه

ثانياً:
كيف اعرف المكدس Stack؟

سهل وجاهز كالعادة
كود :
Dim S As New stack(Of String)

وطبعا تستطيع ان تحدد نوع بيانات اخر مكان String
المهم الان اصبح عندك lمكدس جاهز للاستخدام

ثالثا:
كيف اضيف البيانات الى المكدس Stack ؟
ما عليك الا ان تستخدم الدالة Push ويتم ذلك بهذا الشكل
كود :
S.Push("Any String")

وبهذا الكود يتم ادخال النص Any String الى الكود ليأخذ دوره

رابعاً:
كيف استخرج البيانات من المكدس Stack ؟
ايضا لا داعي للقلق فهذا اسهل مما تتصور
استخدم الدالة Pop وهي ستقوم بالمطلوب
ستعيد لك العنصر الاخير من المكدس ثم ستقوم بحذفه من المكدس
ويتم استخامها بهذا الشكل
كود :
Dim X As String = S.Pop

هنا وضعنا العنصر الاخير بالمتغير X وطبعا تستطيع استعماله كما تريد

خامساً:
بماذا يفيدني الصف المكدس Stack ؟

يصراحة المكدس هام جدا جدا جدا في البرمجة
ومستحيل ان يخلو اي برنامج منه
فعند استدعاء اي دالة او تابع فإن قيمة مؤشر الذاكرة يتم حفظخا في المكدس ومن ثم يتم استرجاعها عند الانتهاء
وايضا يفيد في عمل برنامج الة حاسبة وهو ما ساتكلم عنه في الدروس القادمة ان شاء الله
وهذا مثال بسيط لاستخدامه
كود :
Public Class Form1
    Dim S As New Stack(Of String)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For i = 0 To 5
            S.Push(i)
        Next
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For i = 1 To S.Count
            MsgBox(S.Pop)
        Next
    End Sub
End Class

فقط قم باضافة button واحد
ولاحظ سهولة استخدام المكدس ايضا في ادخال البيانات و استعادتعا ومعالجتها

طبعا يوجد دوال اخرى يمكنك استخدامها مثل
الدالة count تعيد عدد العناصر في المكدس
والدالة peek تعيد العنصر الاخير ولكن دون حذفه
وهما اهم دالتين بعد اللي مذكور فوق
[/COLOR]