Professional Documents
Culture Documents
Stacks
Stacks
Stacks
stacks
basheer al jarrah
بشير الجراح:شرح الطالب
DATA STRUCTURE
وطبعا يا جماعة عشان هيك زي ما قلنا الستاك اخر عنصر بفوت هو اول
عنصر بطلع اسمها )LAST IN FIRST OUT(LIFO
طيب هسا فهمنا مبدأ الستاك بدنا نفهم كيف بنشتغل
عليهم وشو بنستفيد منهم تمام؟ اه تمام مش عكيفك عزيزي
DATA STRUCTURE
هسا نشوف فنكشن االزالة اللي راح نستخدمه عشان نعمل remove
الخر عنصر تمت اضافته على الستاك
pop
الفنكشن اسمه بوب بشوف اذا الستاك فاضية بحكيلك انه بتقدرش تحذف
من ستاك فاضية طبعا عن طريق فنكشن ، isEmptyStackفاذا
الستاك مش فاضية بنقص stackTopواحد فصار مكان اخر عنصر
DATA STRUCTURE
هو اللي راح نضيف عليه فهيك يعتبر اخر عنصر مش مهم بالنسبة النا
النه بنعتبر مكانه فاضي وبنضيف عليه عادي وهيك نعتبر حذفناه.
top
InitializeStack
isFullStack
DATA STRUCTURE
وبخلي الستاك توب صفر عشان تكون الستاك فاضية وبعمل الليست او
االرراي او الستاك مسميات مختلفة والمعنى واحد
destructor
طيب هي الكود اللي شرحناه هيك راح يصير ال TempObjفيه قيم
الستاك األصلي بس بالعكس يعني
9
10
4
6
3
طيب هسا بدي ارجع القيم للستاك االصلية زي ما هي كيف؟
DATA STRUCTURE
طيب هيك خلصنا الستاك باستخدام االرراي ليست هسا بدنا نشوفها
باستخدام اللينكد ليست بنفس العمليات
.…push,top,isEmpty,isFull
اول اشي بدنا نعمل structعشان نعمل ال NODESوكودها بسيط
ستركت فيها بوينتر عشان يوخذ لينك النود التالية وفيها متغير بحفظ ال
info
طيب لما نعمل الكالس راح يكون عنا بوينتر اسمه stackTopبأشر
على اخر عنصر انضاف على الستاك
يعني لو قلنا الستاك حطينا فيها 2 1راح يأشر على ال(2يعني البوينتر
فيه لوكيشن النود اللي ال infoفيه تساوي )2ولو ضفنا 3راح يصير
الستاك توب يأشر على 3وهكذا عزيزي
طيب خلينا نبلش بالعمليات
) constructor(default
DATA STRUCTURE
اذا الستاك توب ما بأشر على اشي يعني الستاك فاضية وراح يرجع
true
isFullStack
طبعا الفنكشن راح يرجع دايما falseوهي فكرة اللينكد ليست أصال انه
ما يكون عندي مكان محجوز عالفاضي وال حجم محدود
DATA STRUCTURE
initiazieStack
هون راح اعمل بوينتر جديد اسميه tempاخليه يأشر على اول نود
بالستاك اللي هو بأشر عليه ال stackTopبسطر رقم 3أصال بعدين
DATA STRUCTURE
بخلي الستاك توب يأشر على ثاني نود بسطر رقم 4
الفنكشن بسيط بشيك اذا الستاك فاضية بوقف البرنامج اذا مش فاضية
بطبعلي اخر ايليمنت بالستاك
DATA STRUCTURE
طيب انا عملت النود األولى باجي بحط فيها قيمة النود األولى بالستاك
اللي بدي انسخ منها\\6
وبحط اللينك فيها null \\7
بعدين بجيب البوينتر اللي انا عامله اللي اسمه lastبخليه يأشر على
النود اللي عملتها\\8
وبخلي ال(currentاللي هو بساوي الستاك توب للستاك اللي بدي
انسخ منها يعني باشر على اول نود فيها)
يروح على النود اللي بعدها\\9
بعدين بعمل لوب طول مهو ال current != nullيعني لحد ما
يوصل الخر نود بالستاك اللي بدي انسخ منها النه بمشي عليها
DATA STRUCTURE
جوا اللوب بعمل نود من البوينتر اللي عملته بسطر 10\\ 1
وبحط فيه infoالنود اللي بأشر عليه ال currentاللي هو بالستاك
اللي بدي انسخها\\11
بعدين بخلي النود اللي عملته ما يأشر على اشي\\12
بعدين بنجيب ال lastاللي خليناه يأشر على النود اللي عملناها من ال
(stackTopشوف سطر)8وبنخلي
last->link=newNode
يعني ال last->linkاللي هو اللينك المخزن بالنود اللي عملناه من ال
stackTopيعني بنخلي نود ال stackTopيأشر على ال
newNode
بعدين بخلي ال lastيأشر على ال( newNodeال lastراح يأشر
على اخر نود ضفته اللي )
DATA STRUCTURE
Push(1);
Pop();
Push(2);
Push(3);
Pop();
Push(4);
Pop();
Pop();
;Push(5)
DATA STRUCTURE
push(20);
push(4);
top();
pop();
pop();
DATA STRUCTURE
push(5);
top();
a) 20
b) 4
c) stack underflow
d) 5
1 b 9 c
2 d 10 b
3 a 11 a
4 d 12 d
5 c 13 d
6 b
7 c
8 a