Skip to content
Get App

Lab4 Part1

شرح لاب الستاك والكيو: مفهوم LIFO وعملياتي Push و Pop و Peek، وتمثيل الستاك كأبستراكت داتا تايب بالأراي والسينجل لينكد ليست.

Key Takeaways

  • الستاك تعمل وفق مبدأ LIFO ويكون الإدخال والحذف من جهة التوب فقط
  • يمكن تمثيل الستاك بالأراي أو بالسينجل لينكد ليست مع بقاء الواجهة نفسها
  • العمليات الأساسية للستاك هي Push وPop وPeek وisEmpty وisFull وsize

What the video covers

  • مقدمة عن اللاب الثالث الذي يتناول الستاك والكيو وسلوكهما البرمجي
  • تعريف الستاك كبنية تسمح بالإدخال والحذف من طرف واحد يسمى التوب
  • مبدأ LIFO: آخر عنصر يدخل هو أول عنصر يخرج
  • شرح عملية Push وإضافة العناصر فوق التوب
  • شرح عملية Pop لحذف العنصر العلوي وPeek لقراءته دون حذف
  • مفهوم الأبستراكت داتا تايب وفصل الواجهة عن طريقة التمثيل
  • تمثيل الستاك بالأراي مع تتبع المؤشر T وحالة الستاك الفارغة
  • تمثيل الستاك بالسينجل لينكد ليست باستخدام الهيد كالتوب
  • مقارنة بين الريموف في الستاك والإزالة من اللينكد ليست
  • تطبيق عملي: عكس الأراي باستخدام الستاك وفكرة الترتيب العكسي

Answers

Questions about this video

ما هو مبدأ عمل الستاك في هذا الفيديو؟

الستاك تعمل وفق مبدأ LIFO، أي أن آخر عنصر يدخل يكون أول عنصر يخرج، والإدخال والحذف يتمان من طرف واحد يسمى التوب.

ما الفرق بين عمليتي Push وPop؟

عملية Push تضيف عنصراً جديداً فوق التوب، بينما عملية Pop تحذف العنصر الموجود في أعلى الستاك وتعيده.

كيف يمكن تمثيل الستاك بحسب الفيديو؟

يشرح الفيديو تمثيل الستاك بالأراي باستخدام مؤشر للتوب، وتمثيلها بالسينجل لينكد ليست باستخدام الهيد كنقطة للتوب.

Full Transcript — Download SRT & Markdown

00:01
Speaker A
السلام عليكم، اليوم إن شاء الله رح نحكي في اللاب عن الستاك والكيو في اللاب الثالث. أخذنا اللينكد ليست بأنواعها، وكيف السلوك البرمجي تبعها في هذا اللاب. إن شاء الله رح نحكي زي ما حكينا عن الستاك، والسلوك تبعها كيف بتتصرف، والكيو السلوك تبعها كيف بتتصرف برمجياً.
00:21
Speaker A
تبعها كيف بتصرف برمجيا رح نحكي عن تمثيل الستراكت الستاك كابستراكت داتا تايب باستخدام الاراي والسينجل لينكد ليست وراح نحكي عن تمثيل الكيو كابستراكت داتا تايب برضه باستخدام الاراي والسين لينك ليست تمام في الجزء الاول من اللاب ان شاء الله رح نحكي عن الستاك
00:43
Speaker A
رح نحكي عن تمثيل الستاك كأبستراكت داتا تايب باستخدام الأراي والسينجل لينكد ليست، ورح نحكي عن تمثيل الكيو كأبستراكت داتا تايب برضه باستخدام الأراي والسينجل لينك ليست. تمام؟
01:10
Speaker A
تمام من طرف واحد هذا الطرف بنسميه توب لنفترض انه انا عندي الستاك بهذا الشكل تمام راح ادخل فيها طرف واحد اللي هو هذا الطرف اللي بسميه التوب تمام راح نرمز له برمز تي هذا الطرف انا من خلاله بدخل العناصر
01:28
Speaker A
في الجزء الأول من اللاب إن شاء الله رح نحكي عن الستاك ونوضح المفاهيم المتعلقة فيها والسلوك البرمجي تبعها. الآن، الستاك هي هيكلية، أو برمجة، أو بنية، بنقدر نحكي عنها، تسمح بإدخال وحذف العناصر من طرف واحد. تمام؟ هذا الطرف بنسميه التوب.
01:45
Speaker A
تمام والتوب المؤشر الاخير رح يكون طبعا بشر على ال 40 تمام الان لو بدي احذف انا من الستاك هي منطقيا انه اول عنصر ظاهري عندي هو اللي رح احذفه فعمليه الحذف رح تكون اني انا اطلع ال 40 بضل انا عندي التوب
02:03
Speaker A
إذاً الستاك هي بنية أو هيكلية معينة تسمح لي إني أدخل عناصر واحذفها من طرف واحد، هذا الطرف بنسميه توب. لنفترض إنه عندي الستاك بهذا الشكل، تمام؟ رح أدخل فيها من طرف واحد، اللي هو هذا الطرف اللي بسميه التوب. رح نرمز له برمز T. هذا الطرف، من خلاله بدخل العناصر.
02:22
Speaker A
المثال 40 هو اول عنصر طلعته في [تنحنُح] عمليه الحبيب فبرمز لسلوك الستاك تمام بالليفو سلوك الستاك او البيهيفير تبعه برمز له او بسميه الليفو لاست ان فيرست اوت بمعنى اخر عنصر بيدخل عندي في الستاك هو اول عنصر بطلعه ليش السبب فكره انه انا
02:44
Speaker A
لو دخلت أول عنصر 10، رح أدخل الرقم 10 رح يصير الـ 10 تحت. بعدين دخلت العنصر الثاني 20، رح يصير الـ 20 فوقه. لو عملت إدخال لـ 30، رح يكون الـ 30 كمان فوقهم. ولو بدي أدخل الـ 40، رح يكون الـ 40 هنا. والتوب المؤشر الأخير رح يكون طبعاً بشير على الـ 40.
03:05
Speaker A
ايش معنى بوش وايش معنى كلمه بوب لو انا بدي احذف او عملت الامر بوب تمام رح يحذف لي ال 40 رح يحذف ال 40 هي هي فكره سلوك الستاك الان نحن رح نحكي في ال في هذا اللاب او في البدايه عن الستاك كابستراكت
03:22
Speaker A
الآن، لو بدي أحذف من الستاك، منطقياً إنه أول عنصر ظاهر عندي هو اللي رح أحذفه، فعملية الحذف رح تكون إني أطلع الـ 40، ويضل عندي التوب على الـ 30. لو بدي أحذف كمان مرة رح أطلع الـ 30. ففكرة الستاك إنه أول عنصر بيدخل، هو بيكون في القاعدة، وآخر عنصر بيدخل هو أول عنصر بيطلع. لاست إن فيرست أوت: آخر عنصر دخل هو أول عنصر طلعه. في المثال، الـ 40 هو أول عنصر طلعته في عملية الحذف.
03:37
Speaker A
معرف عندي في جافا بيحتوي على اربع فانكشن او خمس فانكشن اساسيه البوش بتاخذ الالنت تمام بوش بتاخذ الالنت اللي انا بدي اضيفه وبتضيف دائما وين تو ذا توب بتضيف للتوب بمعنى انا لو كانت عندي الستاك فاضيه عملت بوش للعشره ففرح فرح يكون التوب انا عندي
03:57
Speaker A
فبرمز لسلوك الستاك، أو البيهيفير تبعه، بسميه الـ LIFO، Last In First Out. بمعنى آخر، آخر عنصر بيدخل عندي في الستاك هو أول عنصر بطلعه. ليش السبب؟ فكرة إنه أنا بدخل وبحذف فقط من طرف واحد، هذا الطرف بسميه التوب.
04:12
Speaker A
وبترجعنا نل اذا كانت الستاك فاضيه الفانكشن توب بترجع لي العنصر اللي في التوب بدون ما تحذف لي اياه ونل اذا كانت الستاك فاضيه والسايز والام امتي اللي هم بحددوا لي ال ال الحجم والهل الاراي فاضيه او لا تمام
04:34
Speaker A
واضح عندي في هذا المثال، في الشكل اللي رسمناه: أول شيء عملت Push للعشرة، دخلت، بعدين الـ 20، بعدين عملت Push للـ 30، وآخر شيء عملت Push للـ 40. ورح نحكي إيش معنى Push، وإيش معنى كلمة Pop. لو أنا بدي أحذف أو عملت الأمر Pop، رح يحذف لي الـ 40. هي هي فكرة سلوك الستاك.
04:54
Speaker A
الفانكشن بدون ما يقيدني بطريقه تمثيل معينه لهم عشان هيك في بدايه اللاب حكينا انه رح نتعرف على الستاك تمام ك ابستراكت داتا تايب ونعرف كيف نمثلها بالاراي وكيف نمثلها بالسينجل لينكد ليست فخلينا نيجي نشوف نحن كيف ممكن نمثل الستاك بالاراي
05:13
Speaker A
الآن، رح نحكي في هذا اللاب، أو في البداية، عن الستاك كأبستراكت داتا تايب. الأبستراكت داتا تايب بمعنى إنه بتسمح لي أو بتعرف لي إيش عندي من بيانات، ولكن إيش عندي من عمليات أنا بدي أعملها، لكن بدون ما تحكي لي كيف بدي أنفذها. تمام؟ فالستاك كأبستراكت داتا تايب معرف عندي في جافا، بيحتوي على أربع أو خمس فنكشن أساسية.
05:34
Speaker A
بحتاج لها التوب تمام نيجي هنا لو انا بدي ادخل ال العنصر رقم 10 بدي ادخل 10 بدي اعمل له بوش لاحظي ايش عملت اخذت التوب الموجود عندي الرقم 0 ورحت حطيت فيه العشره هنا في اختلاف ما بين الموقع اللي
05:51
Speaker A
الـ Push بتاخذ الإلمنت اللي أنا بدي أضيفه، وبتضيف دائماً فوق التوب. بمعنى، لو كانت عندي الستاك فاضية وعملت Push للعشرة، فرح يكون التوب عندي العشرة. بعدين عملت كمان مرة Push للـ 20، رح ينضاف الـ 20 ويصير التوب الـ 20. فهي دائماً بتضيف فوق التوب.
06:08
Speaker A
اللي هو مكان التوب ورحت زودت التوب بواحد بدي اضيف ال 20 رح اعمل بوش ايش اللي رح يصير رح يروح للتوب التوب موجود عند الاندكس واحد رح يدخل ال 20 عند الاندكس واحد ويزيد التوب كمان واحد فايش صار؟
06:25
Speaker A
أما الـ Pop فانكشن ما بتاخذ بارامتر، بترجع لي العنصر اللي موجود في التوب وبتحذفه. والـ Peek بترجع لي العنصر اللي في التوب بدون ما تحذفه لي. والـ isEmpty بترجع لي إذا كانت الستاك فاضية أو لا. والـ size وال isFull هم بحددوا لي الحجم والهل، يعني الأراي فاضية أو لا.
06:43
Speaker A
ضفت ال 40 نفس الفكره يعني المثل الموجود معنا عند الاندكس ثلاثه بروح بحط القيمه بعدين بحدد قيمه التوب وبيزيدها واحد الان لو بدي اعمل بوب بدي اعمل حذف ايش اللي رح يصير؟ رح يروح التوب الان بشر على اندكس
06:59
Speaker A
فهذول الفنكشن الأساسيين الموجودين في الستاك اللي بنتعامل معهم دائماً، بغض النظر عن طريقة تمثيلنا للستاك. ليش هنا حكينا Stack ADT؟ يعني هي اختصار Stack Abstract Data Type، يعني الكلاس الكبير اللي بيحتوي على الستاك، بيكون فيه هذول الفنكشن بدون ما يقيدني بطريقة تمثيل معينة لهم. عشان هيك في بداية اللاب حكينا إنه رح نتعرف على الستاك كأبستراكت داتا تايب، ونعرف كيف نمثلها بالأراي، وكيف نمثلها بالسينجل لينكد ليست.
07:19
Speaker A
بيروح عند الاندكس ثلاثه بيحذف القيمه وبصير التوب عند مين؟ عند الثلاثه يعني هو الاندكس ثلاثه قادر يستقبل قيم تمام فهي هي فكره الستاك كاري بيز تمام في الكتاب الستاك بتتخزن في يعني العناصر او الالنت اللي بسميها في الستاك هي بدي
07:40
Speaker A
فخلينا نيجي نشوف كيف ممكن نمثل الستاك بالأراي. رح نحكي عن الأراي بيزد ستاك إمبلمنتيشن. الفكرة اللي عندي، خلينا نشوفها بتمثيل بصري، وبعدين نرجع للكود. الآن، أنا قلت الستاك بدي أمثلها بالأراي. كيف رح يكون؟ عندي أراي كأنها هي الستاك. بدي أدخل من طرف واحد، بحتاج لها التوب. تمام؟
07:56
Speaker A
التي في العرض البصري اللي شفناه كان التوب لو انا عملت كلير كلير للستاك التوب كان يبدا من زيرو لانه بدل اراي تبعتي من الاندكس زيرو لكن في الكتاب رح نبدا التوب من ماينس تمام رح نبدا التوب من ماين من ماينس
08:12
Speaker A
نيجي هنا: لو أنا بدي أدخل العنصر رقم 10، بدي أدخل 10، بدي أعمل له Push. لاحظي إيش عملت: أخذت التوب الموجود عندي الرقم 0 ورحت حطيت فيه العشرة. هنا في اختلاف ما بين الموقع اللي نحن بنعمل منه الفيجوالايزيشن، والكتاب اللي بندرس منه. ورح نحكي إن شاء الله في البداية إنه هنا عرّف لي الأراي بداية من الإندكس 0. فكان التوب عندي 0، يعني هو بشير على المكان اللي أنا بدي أدخل فيه العنصر. دخلت العشرة عند الإندكس صفر اللي هو مكان التوب، ورحت زودت التوب بواحد.
08:33
Speaker A
العادي الفيجولايزيشن العادي اللي شفناه تمام عمليه البوش عمليه الاضافه بتعمل زياده للمؤشر بواحد وعمل [تنحنُح] وعمليه البوب بتعمل كلير للداتا الموجوده عند التوب هذا و وبتنقل قص من عمليه من المؤشر تي واحد خلينا نيجي نشوف احنا كيف الان ايش اللي رح نعمله حكينا انه انا في
08:57
Speaker A
بدي أضيف الـ 20، رح أعمل Push. إيش اللي رح يصير؟ رح يروح للتوب، التوب موجود عند الإندكس واحد، رح يدخل الـ 20 عند الإندكس واحد ويزيد التوب كمان واحد. فإيش صار؟ التوب موجود عند إندكس واحد، بروح بحط القيمة عند الإندكس، بعدين بزيد التوب بواحد. فصار عندي التوب موجود عند إندكس اثنين. بدي أضيف الـ 30 كمان، Push: التوب عند إندكس اثنين، بضيف القيمة، بعدين بروح بحدّث التوب وبضيف عليه واحد.
09:20
Speaker A
اسمها داتا لانه انا بدي امثل الابستراكت هلا كاريراي اراي عاديه بدي انا اراي اسمها داتا وعرفت التوب تمام انه بيبدا من ماينس واحد بعدين الكونستركتور تبعت الكلاس بتاخذ رقم هذا الرقم ايش من خلاستفيد منه اني رح احدد حجم
09:40
Speaker A
لو كمان ضفت الـ 40، نفس الفكرة. يعني المثال الموجود معنا: عند الإندكس ثلاثة، بروح بحط القيمة، بعدين بحدد قيمة التوب وبزيدها واحد.
09:55
Speaker A
ال 1 لانه انا ما بينفع ارجع سايز بالسالب فاذا كان ال لو انا رجعت تي لحال فرح يرجع لي سالب واحد ما في سايز بسالب فسالبوا صفر بتبدا انا عندي السايز من صفر الى يعني الصفر هو اول عنصر تمام عندي الاندكس
10:14
Speaker A
الآن، لو بدي أعمل Pop، بدي أعمل حذف، إيش اللي رح يصير؟ رح يروح التوب. الآن بشير على إندكس فاضي رقم أربعة. لكن أنا بدي أحذف، والإندكس أربعة ما في شيء. فرح يروح ينقص التوب بواحد، عند الإندكس ثلاثة يعمل Remove للقيمة الموجودة فيه، ويحدّث التوب عند الإندكس ثلاثة. تمام؟ لو عملت Pop، التوب عند أربعة رح ينقص بواحد، صار عند الثلاثة. بيروح عند الإندكس ثلاثة، بيحذف القيمة، وبصير التوب عند مين؟ عند الثلاثة. يعني الإندكس ثلاثة قادر يستقبل قيم تمام.
10:31
Speaker A
نفس السايز الحالي رح يمرر ايرور انه الستاك فل مليانه غير هيك ايش بده يعمل الداتا بلس بلس التي يعني الدا ال الداتا الموجودين في عند الاندكس هذا مثلا دخلي فيه القيمه قيمه الالمنت المحدد هلا ليش احنا حطينا بلس بلس التي يعني احنا هنا عملنا عمليه
10:55
Speaker A
فهي هي فكرة الستاك كأري بيز. تمام؟ في الكتاب، الستاك بتتخزن في... العناصر أو الإلمنتس اللي بسميها في الستاك، هي بدي أسميها الداتا. لما أنا أقول داتا، فمعناها هي الستاك إلمنت. وحكينا إنه بنحتاج في الستاك، زي ما كان واضح معنا هنا، إنه نحن بنحتاج مؤشر اسمه التوب. نحن في الكتاب رح نوصف له برمز T. في العرض البصري اللي شفناه كان التوب، لو أنا عملت Clear للستاك، التوب كان يبدأ من زيرو، لأنه بدل أراي تبعتي من الإندكس زيرو. لكن في الكتاب رح نبدأ التوب من -1.
11:17
Speaker A
قيمه سالبه والاراي تبعتي ما بتبدا من سالب اول اندكس في الاريه دائما بكون صفر اول اندكس في الاريه رقم صفر فانا لو بدي اضيف اول عنصر بينفع اضيف بينفع يعني اقول الداتا فيمتغير ها او بالانكرمنت هذا لانه ايش رح يعمل
11:37
Speaker A
تمام؟ رح نبدأ التوب من -1. ليش -1 كديفولت؟ قصدي كديفولت، فالو. يعني -1 معناها إنه الستاك تبعت أم T، يعني الستاك فاضية. إذا كان التوب أو المؤشر يساوي سالب واحد، معناها الستاك ما في عندي فيها قيم. فأول عملية إضافة رح تبدأ من عند الصفر. العادي، الفيجوالايزيشن العادي اللي شفناه، تمام؟ عملية الـ Push، عملية الإضافة، بتعمل زيادة للمؤشر بواحد. وعملية الـ Pop بتعمل Clear للداتا الموجودة عند التوب، وبتنقل قص من عملية من المؤشر T بواحد.
11:54
Speaker A
يعني مفاهيم دقيقه لكن بتميز بين فهم الطالب والثاني لكن الصح انه انا بما انه بديت التي من سالب واحد اني انا بدي اروح احدد قيمته بواحد تمام فانا لو بدي اضيف اول عنصر رح يبدا عندي انا هنا من الصفر
12:07
Speaker A
خلينا نيجي نشوف إحنا كيف الآن إيش رح نعمله. حكينا إنه أنا عندي Stack كلاس كبير في الجافا، كأبستراكت داتا تايب، بعرّف لي الفنكشنز، يعني بحددلي إ
12:31
Speaker A
تمام بعدين البوب رح ترجع لي بتحذف اخر عنصر وبتنقص مين بتنقص من التي فاذا كانت امتي راح ترجع غير هيك انا راح اخزن اللي راح ارجعه في انسر في متغير غير اللي هو راح اخزن فيها مين الداتا الموجودين في الاندكس تي او في التوب وغير
12:52
Speaker A
هيك راح اعمل ايش اللي هو التي ماينس اي ماينس يعني رح انقص من التي واحد وراح ارجع الجواب تمام طيب نرجع نشوف التوضيح اللي موجود هنا انه انا عملت بوش العش اول شيء بترجع في القاع بتدخل في القاعده
13:20
Speaker A
بعدين بش ال 20 رح تكون فوقيه بش 30 فوقيه بش ال 40 مثلا فوق ال 30 تمام هنا اكتفى باخر شيء قيمه 30 لو عمل بوب ما بتاخذ قيمه معناها انا رح احكي 30 ممكن يجي سؤال في اختر مثلا لو انا دخلت العناصر معنى
13:36
Speaker A
الكلام انه انا لو دخلت العناصر 10 20 30 بشكل متتالي مين اول عنصر رح ينحذف هو 30 تمام لو عملت حذف مرتين مين اخر عنصر رح ينحذف ال 20 لانه رح احذف اول مره 30 بعدين اعمل بوب كمان مره رح يطلع لي مين
13:52
Speaker A
ال 30 فهي امور مهم تفهموها تمام وبما انه نحن هنا مثلنا الستاك بالاراي لاحظنا انه كل العمليات الكومبلكسيتي لها واحد ثابته بمعنى اني انا بتعامل مع اندكس مباشر السايز مباشره الامتي مباشره البوش عند اندكس معين البوب لو بدي احذف من يعني
14:21
Speaker A
بتحذف لي اخر واحد فكل العمليات اللي بتصير بالاري ستاك تمام قيمتها ثابته او الكومبلكستي لها ثابت لكن مشكلتها ظلت في السعه انها ايش مالها فيكس كباسيتي فعشان هيك كان الحل اني انا ارجع اعمل تمثيل مره ثانيه للستاك باستخدام اللينكد ليست تمام
14:45
Speaker A
فنيجي نشوف اللينكد ستاك اللي هي انا كيف بطبق الستاك او بمثل الستاك باستخدام اللينكد ليست تمام الان نكمل في ال في اللينكد ليست لما نعمل لها امبلمنتيشن بال بالسينجل لينكد ليست اللينكز تاك بدنا نعملها امبلمنتيشن بالسينجل لينكد ليست الان حكينا المشكله
15:08
Speaker A
في في استخدام الاراي كانت انها حجمها ثابت فكان الحل اساسا للاراي هو اللينكد ليست فنحن بدنا نعمل الستاك نمثلها باللينكد ليست ايش الفكره بدل ما نحن نعملها بالستاك العا بالاراي العاديه انا بدي اعمل نود مثلا اعطيها قيمه معينه بدي اعمل بوش احط
15:29
Speaker A
فيها النود فيها قيمه معينه بعدين اعمل لها ريفرنس تمام بعدين اعمل بوش مره ثانيه تخلي ان اعمل نود جديده اخلي النود القديمه تاشري عليها واعطيها القيمه وانشئ لها مؤشر ياشر على نال بعدين مثلا بدي اعمل بوش لقيمه ثالثه لل 30 بدي اعمل نود
15:50
Speaker A
اعطيها قيمه 30 واخلي النود اللي قبلها تاشري عليها والمؤشر تبعها رح ياشر على نل وهكذا فهي هي فكره اني انا اعمل تمثيل للستاك باللينكد ليست هي كل فكره من هي المفاهيم البرمجيه خوارزميات بنفكر فيها بطريقه منطقيه وبنحولها الى كود هلا نحن
16:08
Speaker A
بنحكي في اللابات بطريقه انه نحن نفهم كيف طريقه التمثيل لكن في الشغل العملي حقيقه نحن بنستخدم مكتبات جاهزه مبنيه في اللغه اذا احتجنا تعديل او تخصيص لكود معين نحن بننشئه لحالنا زي ما اخذنا مثلا في اللاب الماضي اخذنا تطبيق باستخدام مكتبات
16:26
Speaker A
الجافا الاساسيه اللي هو السينجلي لينكد ليست والدبليولي لينكد ليست وهكذا ورح ناخذ تطبيق عملي ان شاء الله على الستاك والكيو لكن رح نستخدم فيها برضه المكتبات لكن مش بعيد انه نطلب منكم في الامتحانات او في الاختبارات تمثيل لاليه كود معين ين
16:42
Speaker A
جزء معين من هي المفاهيم فضروري نحن نفهم هي الخوارزميات فاذا بالتوضيح البصري اللي انا عندي انا بدخل مثلا 10 20 30 40 تمام بدي انا اعمل لهم بوش كلهم فانا اول ما رح ابدا رح ابدا بالعشره رح ادخلها تمام ال 20 ال 30 واخر
16:59
Speaker A
شيء ال 40 في الستات بدي اعمل بوب مثلا رح ارجع اعمل 40 بوب الاولى حتطلع لي 40 الثانيه رح تطلع لي 30 كمان بوب رح تطلع لي 20 واخر شيء رح تطلع لي 10 فالفكره انه عمليه الادخال دائما بتبدا من الاخر تمام
17:16
Speaker A
يعني انا بدخل الاول من الاول سوري يعني انا مثلا حابدا من اليسار حادخل العين ادخل ال 20 بعدين ال 30 بعدين ال 40 حاخزنهم كلهم في الستاك رح يصير شكلهم بهي الصوره بعدين لو بدي اعمل بوب رح ابدا انا
17:30
Speaker A
الحذف من العكس يعني من الاخر فايش رح يصير معي الترتيب لو انا بدي ارتبهم 40 30 20 10 فكمان فك فكره الستاك تعمل عمليه ريفي فيربز لترتيب العناصر فهي ملاحظه جدا مهمه الان خلينا نشوف تمثيل بصري على الموضوع الستاك وتمثيلها باللينكد ليست
17:50
Speaker A
بعدين رح نحكي عن الكود كيف بصير تمام فانا او في البدايه انا عندي التوب رح يكون باشر على نل التوب هو المؤشر الان يصير لانه اللينكد ليست بتعامل معها بريفرنس صحيح على عكس الاراي اللي بتعامل معها بالاندكس ففي في تمثيل الستاك
18:08
Speaker A
بالاراي كان التوب له اندكس معين بيبدا منه لكن في الستاك التوب هو عباره عن ريفيرنس تمام في البدايه رح ياشر على نال اذا كانت الاراي فاضيه اذا كانت الستاك فارغه لو انا بدي اعمل بوش العشره رح اعمل نود رح اخزن فيها 10 اخلي التوب ياشر
18:27
Speaker A
عليها والنود الجديده اللي هي اللي خزنت العشره بتاشرها على نلطق اللي بصير بدي اعمل كمان بوش لل 20 رح انشئ نود جديده اخليها تاخذ خذ ال 20 تخليها تاشر على الهيد اللي هي اللي كانت 10 واخلي مثلا النود الجديده هي اللي
18:48
Speaker A
باشري عليها التوب فاهمين كيف طيب نعمل كمان مره بش 30 هي بوش انشات ند جديده تمام المؤشر خليته ياشر على ال 20 على النود اللي قبلها والتوب بده يصير ياشر عليها فكانه انا بعمل ايش تحويل للهيدر تمام لو عملت 40 كمان بوش الفكره حانشئ
19:14
Speaker A
نود جديده المؤشر رح ياشر على اللي قبلها 30 والتوب رح ياشر على ال 40 ونظلنا نلف هي الفكره تمام فاذا انا ايش اللي بدي اعمله لو رجعنا هنا اذا ايش اللي بصير انا حانشئ نود جديده ت يعني فكره اللينكد ليست اللي رح يصير
19:35
Speaker A
الستاك كسينجل لينكد ليست انه انا في البدايه في الكلاس مثلا الستاك كلينكد ليست رح اعرف لينكد ليست معينه عشان تضلها تنشئها لها سايز معين يعني بدون سايز رح اعمل بوش رح ايش اللي بصير هنا مثلا لانه انا بتعامل معها بسينجل لينك ليست لما
19:51
Speaker A
اعمل بوش رح يصير تكون كانها اد فيرست كل الفكره اللي بتصير انها اد فيرست لو انا مثلا هنا عملت بوب كمان مره نحن ما بدنا نفهم خليني اعمل كلير للست ايش بدي اعمل انا عندي هلا بدي على ستاك كلينكد ليست انا عندي لينكد ليست
20:10
Speaker A
فارغه بدي اضيف لها بطريقه الستاك بما اني انا بضيف للاستاك فانا خلص رح اضي اظلني اضيف كانها ايش البوش كاني انا بدي اضيف لاول الستاك كاني انا بدي اضيف للينكد ليست زي هنا مثلا تمام هنا لاني انا في الستاك انا انا بضيف
20:28
Speaker A
من من مدخل واحد تمام فرح اضيف كاني انا ايش للاد فيرست عملت بوش للعشره عملت بوش ايش رح يصير كاني حكي اد فيرز حاضيف العشره اخلي التوب ياشر عليها وهي تاشر للنفت الالنت بدي اضيف كمان مره لل 20 بوش النود
20:50
Speaker A
جديده تمام حطيت فيها القيمه ال ال خليتها تاشر على العنصر اللي كان قبلها هو الهيد وخليت التوب ياشر عليها هي كل الفكره تمام من اللي صار من تحويل المؤشرات اني انا انشئ نود لو رجعتوا لكود ال اد فيرست في اللينكد ليست رح تلاحظوا
21:10
Speaker A
انه نفس المفهوم فهي هنت بسيطه لكم انه عمليه البوش في الستاك ك لما اعمل لها امبلمنتيشن باللينكد ليست هي نفس عمليه الاد فيرست نفس عمليه الاد فيرست تمام ولو بدي اعمل انا بوب لو انا بدي اعمل بوب مثلا رح تحذف ال 20 ايش رح يصير نشوف رح
21:32
Speaker A
يحذف القيمه اللي رح يرجعها ويخلي التوب ياشر على ال ال اللي بعد النود نفسها اللي انا حذفتها اللي هو اللي هي كانت الهيد فنفس فكره الريموف فيس من اللينك تست لو تراجعوا المفاهيم وتقارنوها ببعض رح تسهل عليكم فممكن في الكود بدل ما نحن نرجع
21:52
Speaker A
نعمل عمليه مثلا لو انا بدي اعمل بوش مره ثانيه لاحظوا انشات نود غيرت مؤشرات بدل ما ارجع اعمل في لو انتم بدكم تبنوا لحالكم ستاك كلينكد ليست بدل ما ترجعوا انتم تكتبوا اسطر طويله من الكود وتغير مؤشرات لا بتستدعوا
22:07
Speaker A
داله الاد فيرست الموجوده في اللينكد ليست في عمليه البوش في الستاك از لينكد ليست تمام فهي هي فكره مين الستاك اذا كل فكره الستاك كلينكد ليست لما اصممها او امثلها باللينكد ليست البوش هي نفس فكره الاد فيرست والبوب هي نفس فكره
22:31
Speaker A
الريموف فيرست ولاحظنا من الكلام اللي واضح انا عندي هنا ممكن يجي جيكم في اسئله اختل لو انا دخلت عناصر بهذا الترتيب طبعا انا دخل 10 20 30 40 رح الستاك في عمليه البوب او عمليه الحذف رح تطلعهم 40 30 20
22:46
Speaker A
10 فهي بتعمل ريفيرس للعناصر وهنا معطينا تطبيق مثال على الستاك لانها بتعمل الريفيرس استخدمنا هنا الاراي تمام فعمليه الريفيرس هنا ايش بتصير فانا عندي بفر مثلا هو الستاك تمام رح اعرف في اراي ستاك بعدين كل عنصر موجود في البفر بدي
23:10
Speaker A
اعمل له او كل اندكس موجود في البافر بدي اعمل له انا مين بوش في البدايه بعدين كل العنصر موجود في ال في الستا من الاخر بدي انا ابدا مين احذفه نفس الفكره اللي هنا هي الكود هذا هو تطبيق لمفهوم الصوره
23:31
Speaker A
الموضح عندي لو انا بدي امثل اعمل ريفيرس لار راي لو انا سالتكم سؤال حكيت لكم اعملوا ريفيرس لاراي واستخدموا لي الستاك فقط استخدموا هي الطريقه اللي هو منطقيا بالخوارزميات كيف بصير انا عندي اراي مثلا فيها عناصر رح ادخلهم بالترتيب بدي اخزنهم
23:50
Speaker A
بعدين في ستاك اراي ستاك بعدين بدي اصير اعمل بوب اللي هو بصير يطلع من من الاخر كمان مثال على الستاك انا وين بستخدم الستاك موضوع اني انا اقارن الاقواس مع بعض لنفترض انه انا اعطيتكم نمط معين زي هذا النمط مثلا اللي هو الموضح
24:09
Speaker A
معنا في المثال بعدين سكرت الاقواس تمام لو انا اعطيتكم نمط وحكيت لكم افحصوا هل هذا النمط متطابق او لا بمعنى ال نفح يعني نشوف الاكسبريشن هذا او النمط هذا من اليسار لليمين هل بطابقوا بعض يعني انه اول واخر عنصر بطابقوا بعض وهذول انهم
24:32
Speaker A
يطابقوا بعض هذا هو الفكره من سؤال فهي افضل طريقه نستخدمها والاقل كومبلكسيتي بتكون دائما بالستاك ايش اللي بصير بالخوارزميه انه انا بدي اعمل سكان للاكسبريشن من اليسار لليمين هل بقارنوا بعض اول واخر عنصر العنصرين اللي في النص وهكذا بعدين
24:50
Speaker A
ايش بدي اجيب بدي اعمل بوش للعناصر تمام بدي اعمل بوش لكل هول هم الاقواس الفتح وهدول هم اقواس اللي انا بسكر فيهم النمط تبعي فانا بدي اخذ النمط من المنتصف اخزن فيه العناصر او اقواس اللي بتفتح المجموعه والاقواس اللي بتسكر
25:11
Speaker A
المجموعه تبعتي بعدين بدي اتطلع اعمل بوش لكل العناصر هذول في الستاك اجي مثلا للعنصر الاول اعمل له بوش في ستاك العنصر الثاني كلهم بدي ادخلهم داخل الستاك تمام بعدين هلا انا لما اجي هلا انا عندي مثلا حيصير القسم الاول هيك النص الاول من
25:29
Speaker A
الاكسبريشن هيك بدي اروح اعمل بوش فانا رح يصير انا عندي الستاك في الاقواس ها بالترتيب بهذا الشكل تمام زي كده انا هذا رح يكون متغير مثلا او في اراي بدي انا ايش اعمل لهم بوش حاعمل بوش لاول عنصر رح يدخل في الستاك
25:48
Speaker A
بوش لثاني عنصر فوقيه اخر عنصر رح يكون هو اللي فوق بعدين بدي اعملهم بوب لو انا عملت بوب لهذا العنصر وقارنت اول عنصر في في اراي اللي رح تحتوي على اقواس الغلق رح يكونوا متشابهين هين بعدي على اللي ورا
26:04
Speaker A
بوب كمان مره رح الاقي هذا الاندكس اللي وراه في اراي الغلق رح يكون هذا نفس الشيء تمام اخر بوب لاخر عنصر رح يطلع لي القوس الاخير اللي هو هذا تمام اخر عنصر في اراي الغلق اللي هو رح يكون هذا تمام معناها
26:19
Speaker A
انه انا عندي الاكسبريشن متشابه هي هي الخوارزميه رح نطبقها ان شاء الله في هذا اللاب لكن المهم تفهموها كيف اللي بتصير انه انا باخذ الاكسبريشن بقسمه من النص بخزن كل جزء من اقو مثلا النص الاول المفترض يكون اقواس الفتح والثاني اقواس
26:33
Speaker A
الغلق لو كان في غير هيك لو كان انا مثلا عندي هنا عنصر ثاني او شيء ففرح يكون في خلل في الاكسبريشن فرح يطلع لي الايرور هذا ان شاء الله رح نشوفه في اخر اللاب ونطبقه مع بعض الملخص الستاك والكومبلكسيتي اللي
26:48
Speaker A
صارت فانا عندي بوش للستاك طلع لي اوف 1 بمعنى انها ثابته لاني انا بتعامل فقط مع اندكس مع اندكس او مؤشرات البوب نفس الشيء التوب كمان الكومبلكسيتي لها ثابت يعني ما بتاخذ خذ وقت تنفيذ الكود والسايز والامتي اوريدي انهم هم ثابتين
27:07
Speaker A
لانه بعامل مع متغيرات فبدنا ما بدنا نخربط انه الليفو او الستاك بيهيفير دائما اي بيكون مستقل عن الستورج يعني هو ما له علاقه بال بالتخزين تمام فانا ممكن امثل كمان الستاك [تنحنُح] باستخدام الاراي او اللينكد ليست هيك بنكون خلصنا اول جزء من اللاب اللي هو
27:31
Speaker A
الستاك ان شاء الله في اليرس الثاني من هذا اللاب رح نحكي عن الكيو ونوضح المفاهيم الخاصه فيها ونتطرق لتطبيقات عمليه باستخدام المكتبات ونشرح التطبيق العملي هو مقارنه الاقواس مع بعض ان شاء الله رب العالمين
Topics:الستاكالكيوLIFOالأراياللينكد ليستهياكل البياناتجافاPushPopالأبستراكت داتا تايب

Get More with the SozAI App

Transcribe recordings, audio files, and YouTube videos — with AI summaries and speaker detection. 30 minutes free.

Or transcribe another YouTube video here →