السلام عليكم
كيف حالكم جميعاً
بصراحة اشتقت لكم كثيراً
لا أعلم كيف يمكنني التعبير عن ذلك
أحياناً كثيرة أفكر في حالي لو لم تكن هذه المدونة
لا أدري ما كنت سأفعل في وقت فراغي
يبدو أن هناك الكثير ممن أحبوا مقالاتي في تراكيب البيانات
ولله الحمد والمنة
لكني أحب أن أوجه لكم ملاحظة بسيطة
لماذا لا تتحفوني بآرائكم
ليس الموضوع موضوع إرضاء للذات
كل ما هنالك أني أريد أن أفيد أكبر شريحة منكم
فلماذا لا تساعدوني؟
على العموم هذا موضوع راجع لكم
بعد أن أنهينا كلامنا عن الحلقات المتسلسلة بنوعيها
سنحاول الآن الإنتقال إلى التراكيب التي تبنى عليها
هناك نوعين أساسيين:
1- مكدس Stack
2- طابور Queue
بالطبع هناك آخرين سنأجل الحديث عنهم
أو ربما نتجاهلهم 🙂
بما أن معظمكم أذكياء بما فيه كفاية إلا بعض البوابين
(كل يعرف نفسه)
فأنتم تعلمون عن من سنتحدث اليوم
هو عبارة عن وعاء تتجمع فيه البيانات
أبسط مثال عليه مكدس الصحون
والذي يتم تمثيله بالشكل التالي
قمة الوعاء –> الصحن الأول –> الصحن الثاني –> … –> الصحن الأخير –> قاع الوعاء
لكي أسهل عليكم الموضوع
هذه صورة توضيحية
بصراحة الصورة وجدتها على محرك جوجل
ولا أعلم مصدرها الأصلي
يبدو أني أضعتها 🙂
الآن تريد أن تحصل على صحن
لن تستطيع أن تحصل إلى على الصحن الأخير لأنه في القمة
ماذا لو أردت الصحن الأول
ستضطر إلى استخراج كل الصحون حتى تصل إليه
بمعنى آخر آخر صحن دخل المكدس أول صحن يخرج منه
وهذا ما اصطلح على تسميته LIFO
وهي اختصار للجملة
Last In First Out
من يدخل أخيراً يخرج أولاً
(شكراً للأخ شادي على تنبيهي إلى الخطأ)
تعالو نبني مكدس باستخدام الحلقات المتسلسلة أحادية الاتجاه
ماهي العمليات التي نحتاجها؟
1- الإضافة إلى النهاية
2- الحذف من النهاية
جيد سنقوم بعمل كائن من الفئة SinglyLinkedList
ونستخدم الدوال السابقة
بالمناسبة الدوال الخاصة بالمكدس تسمى بالطريقة التالية
ادفع push واسحب pop
وهي تمثل المعنى الفعلي لعملية الإضافة والحذف
سنقوم الآن ببناء الفئة StackList
أنا قمت ببناء واحدة
import SinglyLinkedListV2.SinglyLinkedList; public class StackList { SinglyLinkedList list; public boolean isEmpty() { return list.isEmpty(); } public Object pop() { return list.deleteLast(); } public void push(Object obj) { list.addLast(obj); } public Object top() { return list.getFirst(); } }
لقد قمنا ببناء المكدس الخاص بنا
وهذا عمل جيد
لكنه ليس بالجودة اللازمة
سأتكلم عن طريقة أفضل في المرة القادمة
بعض التطبيقات علي المكدس
1- إلى الأمام وإلى الخلف في المتصفحات
2- التراجع والاستعادة في محررات النصوص
3- التحويل بين أنواع التعبيرات المختلفة postfix prefix
سأحاول أن أتناول بعضاً من هذه التطبيقات بإذن الله
بما أن النعس بدأ يغزو جفوني
نأجل الحديث إلى تدوينة أخرى
تحياتي
شهيد الأقصى
Tags: data structures, linked list, Stack, StackList, المكدس, تراكيب البيانات
السلام عليكم
يعطيك العافية اخي علاء…
شرح رائع ماشاء الله …بس ان شا الله ما اكون من البوابين 🙁
بس عندي شوية اسئلة اذا ممكن..
هلئيت ليش هيك عملت
يعني مثلا انتا عامل كلاس تاني ؟؟غير اللي كاتبه
اول مرة اشوف حاجة زي كدا …يعني انتا عامل امبورت لشو؟
شغلة تانية ليش استخدمت دوال جاهزة؟؟؟
بالنسبة انو نتحفك بآرائنا 🙂 ان شا الله عن قريب حتلاقينا دايما هنا
ورأينا معروف 🙂
صل على خير الانام
الله يعافيكي لولو
بالنسبة لموضوع البوابين
هناك واحد معين أريده 🙂
بالطبع هذا عبارة عن ملف jar
أو ملف java في نفس المشروع
ليش أبني دوال جديدة
وأنا فعلياً بينتها في الحلقات المتسلسلة
ما السبب الذي يمنعني من استخدمها؟؟
بالنسبة لموضوع الآراء
أقصد هل هناك من نقاط غير مفهومة
هل ترين أن أقوم بعمل معين سيساعدك على الفهم
بالطبع ما عدا أن أكتب بغير العربية
فكل الاقتراحات مقبولة
تحياتي
عفوا اخي علاء أنا لا أفهم كثيرا فيما تكتب ولكن حبيت أسلم عليك
لا عليك أخي أبو مروان
تشريفك لي يكفي
تحياتي
جااء بوقته ..مع انو متابع المدونة الرائعة …بس ..يبدو اني لست بحار جيد في المواقع
لاني كسوول
شكرا علاء
مرحبا شادو
بتمنى أكون دايماً عند حسن ظنكم
تحياتي
مرحبا
كان والله نفسي اقراها من الاول لانه كنا محتاجينهم بس المتصفح ماكان يفتح عندي بالمره وتوي زبطه 🙂 🙂
الشرح حلو الحمدلله فاهماه ماعندنا مشاكل بالستاك هنا …يمكن واجهنا مشاكل في حكايه استخدام الستاك للتحويل من infix to postfix
بس الحمدلله عدت علي خير 🙂
بس خلينا اسمها ستاك اما المكدس هادي بتخوف شويه
والله المتصفح بده حرق
الحمد لله أنها عدت
هاتي اسم عربي يكون أمور 🙂
وأنا أعتمده
تحياتي
الله يجزاك خير بس هل ألقى شرح المصفوفات بالتفصيل لأني ندمان أني ما فهمتهم من البدااااية
سأحاول لو وجدت فرصة
لكني لا أعلم متى تأتي هذه الفرصة
على أية حال اطلع على المقالات التالية ستفيدك بإذن الله
http://www.arabteam2000-forum.com/index.php?act=ST&f=43&t=49293
http://www.arabteam2000-forum.com/index.php?showtopic=176955
تحياتي
yes
no 🙂
regards
السلام عليكم
موضوع كثير حلو وانا شخصياً استفدة منه بس عندي سؤال هو (كيف يتم كتابة كود prefix (-+a*bce)?)
وشكرا على جهودكم
بأمانة لا أذكر شيئاً عن prefix و postfix
تحياتي
المنتدى ما شاء الله
مدونة أخي 🙂
اخى الحبيب سلام الله عليكم
ارجو مساعدتك على اميلى الخاص
للضرورة
والله مزنوق
انا وسام من غزة
wesam__1003@hotmail.com
بإمكانك مراسلتي على إيميلي
http://modonat-alaa.freehostia.com/%D8%B3%D9%8A%D8%B1%D8%A9-%D8%B0%D8%A7%D8%AA%D9%8A%D8%A9/
تحياتي
عن جد بتشكرك ياكابتن على هذا المعروف
بصراحة طلع مخى والحمدلله بديت اتابع معك لانه اول مرة بصراحة محرك البحث يوصلنى لعندك
فمشكور كتير
والله يوفقك للخير دايما وانا مبسوطة بشرحك فياريت تستمر
الحمد لله أنه وصلك 🙂
أمين يا رب
بإذن الله في أقرب وقت سأكمل
تحياتي
Very good weblog, I am lucky that I discovered it
any notes or ideas ?
BW,
Alaa
اللله يعطيك العافية بس بدي كود الكلاس لكل دالة من الدوال بلغة الجافا يعني بدي العمليات على المكدس متل الاضافة والحذف على شكل صف بلغة الجافا و
ولك جزيل الشكر
راجعي الدروس الأخرى
والتي تتكلم عن السلاسل أحادية وثنائية الاتجاه LinkedLkist و DoublyLinkedList
تحياتي
مرحبا عندي سؤال متى وليش بنستخدم المكدس!! ،،كل ما يطلع مي سؤال بسألك ؛)
متى نستخدمها سؤال مطاط نوعاً ما؟
لكن يمكن القول بأن أي عمليات يكون فيها تكديس أو من يدخل أخيراً يخرج أولاً فإنها تصلح للمكدس
مثال زر التراجع في محرر النصوص يعتمد على المكدس حيث أن آخر تعديل قمت به هو أول تعديل تريد التراجع عنه
مثال آخر في تأريخ المتصفحات history ستجد أن المواقع التي زرتها مأخراً تظهر أولاً في العرض
وستجدي أن المكدس يعتمد في كل شيء فيه تأريخ تراجع وهكذا
وبالنسبة للأسئلة مرحباً بك كل وقت
تحياتي