تراكيب البيانات: المكدس
أبريل 28th, 2008 بواسطة: admin |
السلام عليكم
كيف حالكم جميعاً
بصراحة اشتقت لكم كثيراً
لا أعلم كيف يمكنني التعبير عن ذلك
أحياناً كثيرة أفكر في حالي لو لم تكن هذه المدونة
لا أدري ما كنت سأفعل في وقت فراغي
يبدو أن هناك الكثير ممن أحبوا مقالاتي في تراكيب البيانات
ولله الحمد والمنة
لكني أحب أن أوجه لكم ملاحظة بسيطة
لماذا لا تتحفوني بآرائكم
ليس الموضوع موضوع إرضاء للذات
كل ما هنالك أني أريد أن أفيد أكبر شريحة منكم
فلماذا لا تساعدوني؟
على العموم هذا موضوع راجع لكم
بعد أن أنهينا كلامنا عن الحلقات المتسلسلة بنوعيها
سنحاول الآن الإنتقال إلى التراكيب التي تبنى عليها
هناك نوعين أساسيين:
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
سأحاول أن أتناول بعضاً من هذه التطبيقات بإذن الله
بما أن النعس بدأ يغزو جفوني
نأجل الحديث إلى تدوينة أخرى
تحياتي
شهيد الأقصى
السلام عليكم
يعطيك العافية اخي علاء…
شرح رائع ماشاء الله …بس ان شا الله ما اكون من البوابين
بس عندي شوية اسئلة اذا ممكن..
هلئيت ليش هيك عملت
يعني مثلا انتا عامل كلاس تاني ؟؟غير اللي كاتبه
اول مرة اشوف حاجة زي كدا …يعني انتا عامل امبورت لشو؟
شغلة تانية ليش استخدمت دوال جاهزة؟؟؟
بالنسبة انو نتحفك بآرائنا
ان شا الله عن قريب حتلاقينا دايما هنا
ورأينا معروف
صل على خير الانام
الله يعافيكي لولو
بالنسبة لموضوع البوابين
هناك واحد معين أريده
بالطبع هذا عبارة عن ملف 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