Skip to content
Get App

Lab3 - Part2

شرح الجزء الثاني من اللاب الثالث عن السيركولر لينكد ليست: بنيتها، دالة الروتيت، وعمليات الإضافة والحذف في الوسط والنهاية.

Key Takeaways

  • السيركولر لينكد ليست تربط آخر عنصر بأول عنصر لتحقيق شكل دائري
  • التيل يشير إلى الهيد، ودالة الروتيت تحرك التيل لتحديد البداية
  • يمكن إضافة عنصر بتعديل مؤشرات التيل والهيد دون تخزين الهيد بشكل منفصل

What the video covers

  • مراجعة سريعة للسنجلي لينكد ليست ومفهوم النود والمؤشرات
  • تعريف السيركولر لينكد ليست حيث يشير التيل إلى الهيد بدلاً من النل
  • الاستخدام العملي للسيركولر لينكد ليست في جدولة المهام مثل Round Robin في الـ CPU
  • دالة الروتيت لتحريك مؤشر التيل والدوران على القائمة
  • شرح خطوات إضافة عنصر إلى قائمة فارغة وإلى قائمة تحتوي عناصر
  • تحديث مؤشرات التيل والهيد عند الإضافة
  • الإشارة إلى الحاجة لحل لعمليات الإضافة والحذف في الوسط أو النهاية وتعقيدها
  • مقدمة للدبل لينكد ليست مع الهيدر والتريلر
  • تطبيق عملي في لاب بلاي ليست باستخدام مكتبة LinkedList وطباعة القائمة
  • تشجيع الطلاب على توسيع اللاب وتطوير دالة الروتيت

Answers

Questions about this video

ما الفرق بين السنجلي لينكد ليست والسيركولر لينكد ليست؟

في السنجلي لينكد ليست يشير التيل إلى النل، أما في السيركولر فيشير التيل إلى الهيد مما يحقق شكلاً دائرياً. لذلك نحتاج فقط إلى مؤشر التيل للوصول إلى القائمة.

ما هي دالة الروتيت في السيركولر لينكد ليست؟

دالة الروتيت تنقل مؤشر التيل إلى العنصر التالي له، وبذلك يتم الدوران على القائمة الدائرية. يتم ذلك عبر تحديث التيل بقيمة التيل.نكست.

أين تُستخدم السيركولر لينكد ليست عملياً؟

تُستخدم في جدولة المهام مثل خوارزمية Round Robin في وحدة المعالجة المركزية، حيث تتم معالجة المهام بالتناوب بشكل دائري.

Full Transcript — Download SRT & Markdown

00:00
Speaker A
عليكم. اليوم، إن شاء الله، راح نكمل في اللاب الثالث. في الجزء الأول منه حكينا عن اللينكد ليست، والنوع الأول منها، اللي هو الأساسي، السنجلي لينكد ليست.
00:12
Speaker A
حكينا إنه أساسها عبارة عن نود بتأشر على يلي بعدها بريفرنس. والنود بتحتوي على الإليمنت والريفرنس اللي اللي اللي بيربط كل الليست مع بعض. اليوم راح نحكي عن نوع ثاني من أنواع ال ال لينكد ليست وهو سيركولر لينكد ليست.
00:29
Speaker A
حكينا إن أساسها عبارة عن نود بتأشر على اللي بعدها بريفرنس، والنود بتحتوي على الإليمنت والريفرنس اللي بيربط كل الليست مع بعض. اليوم راح نحكي عن نوع ثاني من أنواع اللينكد ليست، وهو سيركولر لينكد ليست.
00:39
Speaker A
إيه فبحتاج إني أجيب لها طريقة ثانية أربطها مع بعض. معنى إنه أنا بدي أربط أول عنصر بآخر عنصر بشكل دائري.
00:48
Speaker A
الآن، أنا عندي في الحاسوب مجموعة من الأمور اللي بتكون تتابَع بشكل دائري.
01:03
Speaker A
راح تتعرفوا عليهم إن شاء الله في مادة عمارة حاسبات. الآن الفكرة من السيركولر لينكد ليست كالتالي إنه أنا عندي أساسًا نود، تمام؟ النود بيكون فيها الإليمنت وبتربطها مؤشر لنود ثانية، تمام؟ إذًا هذا أنا اللي بدأت فيها هي الهيد. وراح أكمل
01:20
Speaker A
فبحتاج أجيب لها طريقة ثانية أربطها مع بعض، يعني إني أنا بدي أربط أول عنصر بآخر عنصر بشكل دائري.
01:39
Speaker A
تمام؟ فالتيل راح يأشر على الهيد. نتذكر في كلاس السنجلي لينكد ليست اللي عملناه كنا بنحـ كان الكلاس بيحتوي بشكل أساسي على الهيد وعلى التيل. لكن في السيركولر لينكد ليست أنا الكلاس تبعي بيحتوي فقط على التيل.
01:54
Speaker A
من أحد الأمثلة اللي بنتعامل معها في الشكل السيركولر، أو بنستخدم فيها السيركولر لينكد ليست، هو الراوند روبن شيدولينغ. هذا نوع، بس أي نوع من أنواع جدولة المهام الموجودة في الـ CPU.
02:12
Speaker A
الليست بتحقق شكل دائري، بستخدمها في الراوند روبن سكيدولينج، وغيرها من المهامات، من المهام الموجودين.
02:20
Speaker A
راح تتعرفوا عليها إن شاء الله في مادة عمارة الحاسبات. الآن، الفكرة من السيركولر لينكد ليست كالتالي: عندي أساسًا نود، تمام؟ النود بيكون فيها الإليمنت، وبتربطها بمؤشر لنود ثانية، تمام؟ إذًا هذا اللي بدأت فيه هو الهيد، وراح أكمل باقي الليست.
02:30
Speaker A
بدي أخذ أول عنصر، أنا عندي ليست، فالليست دوت فيرست، أو جيت، الدوت ليست، الليست دوت فيرست، راح ترجعلي أول عنصر موجود، تمام؟ بعد هيك راح ينفذ العنصر اللي وراه، بعد الـ الفكرة أني أنا كيف بدي أعمل روتيت، أو أخليها تلف على العنصر هذا، على العنصر
02:49
Speaker A
تبعتي، لما أوصل لمين؟ للتيل. هذه هي التيل. في السنجلي لينكد ليست كان التيل بيأشر إلى نل، تمام؟ لكن في السيركولر، بمعنى إنه أنا بدي أعمل الليست تبعتي تحقق شكل دائري، فالتيل راح يأشر على الهيد.
03:09
Speaker A
التيل، تمام؟ هذا راح يصير التيل، بتتغير مرة ثانية. تمام؟ هي في اللفة الأولى، في اللفة الثانية عملت روتيت مرة ثانية، هذا التيل، بده يصير التيل دوت جيت نيكست، هذا راح يصير التيل، وهذا خلص، تمام؟ في اللفة الثالثة، هذا هو التيل، وإيش
03:26
Speaker A
تمام؟ فالتيل راح يأشر على الهيد. نتذكر في كلاس السنجلي لينكد ليست اللي عملناه، كان الكلاس بيحتوي بشكل أساسي على الهيد وعلى التيل. لكن في السيركولر لينكد ليست، الكلاس تبعي بيحتوي فقط على التيل.
03:44
Speaker A
وبضلني أنا ألف إيش؟ على الدائرة، فكانت في البداية التيل هنا، عملت روتيت، صار هنا.
03:49
Speaker A
ليش؟ لأنه كيف بقدر أحصل على الهيد؟ عن طريق التيل دوت جيت نكست، تمام؟ التيل دوت جيت نكست، مين راح يعطيني؟ الهيد. فأنا ما بحتاج أرجع أخزن الهيد مرة ثانية. هي فكرة السنجلي، اللي هو السيركولر لينكد ليست: إنه عندي الليست بتحقق شكل دائري، بستخدمها في الراوند روبن شيدولينغ وغيرها من المهام الموجودة.
04:05
Speaker A
التيل لا يساوي نل، بما معناه إنه هيي أنا بـ إذا التيل يساوي نل، إذا التيل كان يعني في الـ مش نل، قيمته موجودة، فأنا بدي أروح أحدثه وأخليها التيل دوت جيت نيكست، تمام؟ أعمل له أبديت.
04:21
Speaker A
تمام؟ الراوند روبن كيف بيشتغل؟ في البداية أنا بدي أحصل على أول عنصر، تمام؟ نفترض إنه عندي مجموعة من المهام الموجودة في الـ CPU، بينتظروا التنفيذ.
04:39
Speaker A
الإليمنت تبعي وبتأشر على نل، تمام؟ وبتأشر مبدئياً في البداية على النل. لكن أنا بتعامل مع سيركولر لينكيد ليست، فأنا ما بينفعش عندي الـ الـ التيل اللي يأشر على نل، لازم يخليه يرجع يأشر على نفسه، عشان يحقق الشكل الدائري.
04:56
Speaker A
بدي آخذ أول عنصر. عندي ليست، فالليست دوت فيرست، أو جيت، الليست دوت فيرست، راح ترجعلي أول عنصر موجود، تمام؟ بعد هيك راح ينفذ العنصر اللي وراه. بعد الفكرة إني أنا كيف بدي أعمل روتيت، أو أخليها تلف على العنصر هذا، على العنصر الثاني، بدي أعمل روتيت، لأنه أنا قاعد بدور بشكل دائري.
05:14
Speaker A
طيب، لو كان في عناصر عندي في الـ في الليست، لنفترض إنه أنا هيي عندي ليست، تمام؟ فيها عناصر.
05:23
Speaker A
فالليست دوت روتيت هي الدالة الأساسية في موضوع السيركولر لينكد ليست. كيف دالة الروتيت بتشتغل؟ بشكل بسيط، عادي: اللي هو التيل، خليلي إياه التيل دوت جيت نكست، بتصير بيلف. بدل ما هذا هو التيل، تمام؟ هذا راح يصير التيل، بتتغير مرة ثانية.
05:37
Speaker A
فيها الإليمنت، وبتأشر على مين؟ على التـ هيي التيل، هذا هو أنا عندي التيل. التيل دوت جيت نيكست مين؟ اللي اللي الهيد.
05:47
Speaker A
تمام؟ في اللفة الأولى، وفي اللفة الثانية عملت روتيت مرة ثانية. هذا التيل، بده يصير التيل دوت جيت نكست. هذا راح يصير التيل، وهذا خلص، تمام؟ في اللفة الثالثة، هذا هو التيل. وإيش التيل الجديد راح يكون؟ التيل هذا دوت جيت نكست، راح يرجع للتيل نفسه، وبيلغي.
05:55
Speaker A
طيب، [تنحنُح] معناها صارت هذه هي الهيد. أنا هذه اللي داخلها هي تصير الهيد الجديدة. هيد جديدة، تمام؟ فكيف بدي أروح أغير المؤشر هذا الأزرق؟ هذا المؤشر ما بينفعش يضلوا هيك. يعني التيل صارت تأشر على عنصر في الوسط. ما
06:09
Speaker A
فهي فكرة الروتيت: إني أنا بحتاج فقط التيل كنود، كمعرّف، أعرف فيه الليست. وأنا بضل أعملها روتيت من خلال التيل دوت تيل دوت جيت نكست، وبضل ألف على الدائرة. كانت في البداية التيل هنا، عملت روتيت، صار هنا.
06:21
Speaker A
إني أنا بدي أضيف بالبداية. إذا كان أول عنصر، يعني ما فيش عناصر في الليست، عادي.
06:26
Speaker A
أعمل روتيت مرة ثانية، التيل راح يصير على هي النود. روتيت كمان مرة راح يرجع لنفس النقطة. فهي فكرة السيركولر لينكد ليست. في عندي مجموعة من الدوال الأساسية فيها، اللي حكينا عنها: الروتيت. تمام؟
06:35
Speaker A
لو كان أنا عندي عناصر، راح تكون عندي بهذا الشكل في البداية. اللي باللون الأزرق هي ال- ال- الليست الأساسية. بعد هيك بدي أروح أنشئ ال- النود الجديدة.
06:45
Speaker A
كيف بتشتغل دالة الروتيت؟ إذا كان التيل لا يساوي نل، بمعنى إنه أنا إذا التيل يساوي نل، إذا التيل كان في الـ مش نل، قيمته موجودة، فأنا بدي أروح أحدّثه وأخليه التيل دوت جيت نكست، تمام؟ أعمل له أبديت.
06:54
Speaker A
بعد هيك بدي أروح أحدث مؤشر التيل. أخليه يأشر على مين؟ على النيوز. وأزيد الحجم للست بواحد.
07:02
Speaker A
أد فيرست: لو أنا بدي أضيف في البداية، كيف راح يصير؟ إذا هلق أنا بحكي حاليًا في السيركولر لينكد ليست، تمام؟ إذا السايز يساوي صفر، معناها ما في عندي عناصر. بدي أنشئ نود اسمها التيل، تمام؟ والنيو نود بتاخذ الإليمنت تبعي وبتأشر على نل، تمام؟ وبتأشر مبدئيًا في البداية على النل.
07:15
Speaker A
بدي أضيف للأول، تمام؟ هي الإليمنت. وبدي إيش أعمل؟ أخليها هي تأشر على التيل دوت جيت نيكست اللي هي الهيد هاي. وأرجع أعمل أبديت للتيل.
07:30
Speaker A
لكن أنا بتعامل مع سيركولر لينكد ليست، فما بينفعش عندي التيل اللي يأشر على نل، لازم يخليه يرجع يأشر على نفسه، عشان يحقق الشكل الدائري. فكيف بدي أعملها؟ بدنا نروح نعمل خطوة ثانية، اللي هو مين؟ التيل، تمام؟ دوت نكست. التالي للتيل هو التيل نفسه، فبترجع تأشر على نفسها. التيل دوت نكست، مين التالي له؟ التالي له هو نفسه، فراح يرجع يأشر على نفسه.
07:40
Speaker A
هنا أنا برجع أعمل أبديت لقيمة التيل بدي أنقل أنا هيك نقلت المؤشر للنيو هيد فهي صارت نيو هيد اللي هو التيل دوت جيت نيكست فهذه بدي أخليها الهيد بدي أخليها التيل فبعطيها إنه التيل يساوي تيل دوت جيت نيكست تمام؟
07:57
Speaker A
طيب، لو كان في عناصر عندي في الليست. لنفترض إنه أنا عندي ليست فيها عناصر أولية، فيها عنصرين بشكل مبدئي، وبدي أجي أضيف للأول. كيف بدي أعملها؟ بدي أعرّف نود جديدة، تمام؟ النود الجديدة اسمها النيو نود. فيها الإليمنت، وبتأشر على مين؟ على التيل، هذا أنا عندي التيل. التيل دوت جيت نكست مين؟ الهيد.
08:14
Speaker A
نيكست اللي هو الإليمنت الجديد بعد هيك بدي أحدث أنا التيل وأخليه هو الإليمنت الجديد فرحت حكيت التيل يساوي التيل دوت جيت نيكست تمام؟ فالفكرة عندي أنا في السيركولر إني أنا بتعامل مع روتيت عشان أحدث أنا بحتاج لها فقط تيل تمام؟ والهيد بجيبه عن طريق
08:34
Speaker A
فهي راح تأشر على الهيد. [تنحنح] معناها صارت هذه هي الهيد الجديدة. هيد جديدة، تمام؟ فكيف بدي أروح أغيّر المؤشر هذا الأزرق؟ هذا المؤشر ما بينفعش يضلوا هيك؛ يعني التيل صارت تأشر على عنصر في الوسط، ما أشرتش على النيو هيد. فالتيل دوت نكست، المؤشر تبع التيل راح نروح لمين؟ راح يروح للنيو نكست اللي هو النيو هيد. فهي فكرتها.
08:57
Speaker A
مؤشر واحد عن طريق مؤشر واحد كالتالي كان يكون أنا عندي هنا ليست تمام؟ أربطها بمؤشر مع ليست ثانية وآخر شيء خلينا نعمل كمان نود واللي هو تأشر على نال هذه هي السنجلي لينكد ليست العادية لو كنت بدي أحذف عنصر تمام؟ لو بدي أحذف عنصر
09:19
Speaker A
إني أنا بدي أضيف بالبداية: إذا كان أول عنصر، يعني ما فيش عناصر في الليست، عادي. فكل اللي بدي إياه إني أنشئ نود جديدة وأخليها تأشر على نل، وأعطي قيمتها للتيل. وبعد هيك مؤشر التيل بدي أخليه يأشر على نفسه.
09:35
Speaker A
الكومبلكسيتي فكان لازم يكون في حل لهذا الموضوع، لعملية إضافة مثلًا عنصر أو حذف عنصر في الوسط أو في الأخير.
09:43
Speaker A
لو كان عندي عناصر، راح تكون عندي بهذا الشكل في البداية. اللي باللون الأزرق هي الليست الأساسية. بعد هيك بدي أروح أنشئ النود الجديدة، أخليها تأشر على التيل دوت جيت نكست، اللي هو الهيد. التيل دوت جيت نكست، أنا بتعامل مع الهيد.
09:55
Speaker A
هي أنا عندي الليست الأساسية هي هاي. تمام؟ لاحظي كل نود لها مؤشرين، بريفيوس ونكست، بريفيوس ونكست. لكن الدبلي لينكيد ليست كمان لها بشكل أساسي، تمام؟ على يعني تو نود أساسية، إستنشل، خاصة، ما بتعملش إشي، لكن لازم تكون موجودة.
10:16
Speaker A
بعد هيك بدي أروح أحدّث مؤشر التيل، أخليه يأشر على مين؟ على النيو. وأزيد الحجم للست بواحد.
10:26
Speaker A
هدول بمثابة كأنهم باوندري أو حدود للست تبعتي، حدود للست تبعتي، بضيف أي عناصر بدي إياها داخلهم.
10:35
Speaker A
لو بدي أضيف للآخر، لللاست، كيف بدي أعمل؟ في الكود الموجود عندي بطريقة مبسطة: إني أضيف للأول وبعدين أحدّث المؤشر. بدي أضيف للأول، تمام؟ هي الإليمنت، وبدي إيش أعمل؟ أخليها هي تأشر على التيل دوت جيت نكست، اللي هي الهيد هاي. وأرجع أعمل أبديت للتيل.
10:42
Speaker A
والحد الثاني هو التريلر. وكل العناصر اللي بدي أضيفهم للست بتكون إن بتوين ما بين الهيدر والتريلر، تمام؟ وكل نود واحدة بيكون لها تو ريفرنس، اللي هو البريفيوس ريفرنس، والنكست ريفرنس، تمام؟ رح نتعرف عليهم الآن بشكل أوضح إن شاء الله.
11:05
Speaker A
تمام؟ لكن إيش بدي أعمل؟ في الآخر، التيل دوت جيت نكست، بدي أرجع أعمل أبديت لقيمة التيل. هنا أنا برجع أعمل أبديت لقيمة التيل. بدي أنقل المؤشر للنيو هيد، فهي صارت نيو هيد، اللي هو التيل دوت جيت نكست. فهذه بدي أخليها الهيد، بدي أخليها التيل، فبعطيها إنه التيل يساوي تيل دوت جيت نكست، تمام؟
11:23
Speaker A
تمام؟ لأنه أي عناصر رح أضيفهم في الدبلي لينكيد ليست أو في الليست بتكون ما بين الهيدر والتريلر.
11:29
Speaker A
هنا أول شيء: عملت نيو نود جديدة، خليتها تأشر على التيل القديم دوت جيت نكست، تمام، اللي هو الهيد هاي الحمراء. [تنحنح] بعد هيك رحت حدّثت المؤشر تبع الـ أولد تيل، التيل القديم، خليته التيل دوت نكست، اللي هو الإليمنت الجديد. بعد هيك بدي أحدّث أنا التيل وأخليه هو الإليمنت الجديد، فرحت حكيت التيل يساوي التيل دوت جيت نكست، تمام؟
11:47
Speaker A
فبتحتوي على الاليمنت تمام بتحتوي على البريفيس نود والنكست نود والكونستركتور تبع ال ال النود في الدبل لينكاد ليست كلاس تاخذ الاليمنت والبريفيس نود وال وال وال نكست نود تمام طيب كيف اللي بيصير انا عندي في اول ما بنشئ الدبل لينكاد ليست
12:10
Speaker A
فالفكرة عندي في السيركولر إني أتعامل مع روتيت عشان أحدّث، أنا بحتاج لها فقط تيل، تمام؟ والهيد بجيبه عن طريق التيل دوت جيت نكست. إن شاء الله يكون الموضوع هذا واضح.
12:35
Speaker A
الهيدر هنا كان نيو نود هاي الهيدر قيمتها نل والبريفيس الها نل تمام البريفيس يعني ال القيمة السابقة الها بتأشر على نل والنكست تبعها كمان ماله بيأشر على نل فنل في كل ال في كلا الحالتين بعد هيك كمان بدي اعمل مين نود جديدة اللي هو
13:02
Speaker A
تمام، النوع الثالث من أنواع اللينكد ليست هو الدبل لينكد ليست. كيف بيصير،
13:26
Speaker A
للهيدر بدي يأشر على مين؟ على التريلر. فالهيدر دوت ست نكست. رح يأشر على مين؟ على التريلر. فكرة الدبلي لينكست هي نفس السنجل لينكست ليست تمام. ما يعني ما بتدور بشكل دائري إنما فقط اللي بفرق بينهم إنه أنا بكون عندي كل
13:45
Speaker A
نود إلها تو ريفرنس. النكست والبريفيس. فهذا هو بشكل أساسي كيف أنا بعرف الدبلي لينكست ليست كلاس. بكون أنا عندي تو نود إسنشال الهيدر والتريلر. والتريلر بكونوا قيمتهم إمتي تمام.
13:59
Speaker A
ال ال الهيدر في البداية بتكون البريفيس إلها. إيه نل. وبكون ال النكست كمان إلها نل.
14:09
Speaker A
التريلر لما أجي أنا أعرفه كمان البريفيس رح يكون هيدر لأنه أنا خلص بكون عرفت الهيدر. والنكست أوريدي نل. بعد هيك أنا لازم أعدل إنه النكست تبعت الهيدر. هو بروح لمين؟ للتريلر. بروح ل.
14:23
Speaker A
للتريلر. ففي الدبلي لينكست ليست أول عنصر في الليست دائماً بكون بعد الهيدر. تمام. وأخر عنصر بكون قبل ال قبل التريلر.
14:37
Speaker A
أخر عنصر بكون قبل التريلر. أنا لو بدي أضيف أول عنصر. لو بدي أنشئ أنا دبلي لينكست ليست. رح أنشئ الهيدر والتريلر.
14:45
Speaker A
بعد هيك بدي أعمل. أد فيرست مثلاً النود ال الجي إف كي. البريفيس إلها رح يكون.
14:53
Speaker A
اللي هو لنيو إستنود هاي. البريفيس رح يكون إلها الهيدر. تمام. أنا لسا ما ضفت هدول العناصر بإعتبار.
14:59
Speaker A
أو خلينا نرجع نشوف. لو أنا بدي أضيف. هيدي أنا بدي أنشئ هنا ليست. هاي الهيدر.
15:06
Speaker A
وهاي التريلر. تمام. بأشر على نل. وهنا الهيدر. تمام. البريفيس إله. نل. هلأ الأن المفترض إنه.
15:25
Speaker A
هي هيك تكون. تمام النكست والبريفيس للتريلر. هاي في حالة أنه أنا ما كان في عندي عناصر. الآن بدي أضيف عناصر. هنا هاي الليست لو أنا بدي أجيب السايز تبعها صفر لأنه ما في عندي عناصر. الهيدر والتريلر هذا الإسنتشال نود ما بعتبرهم مش نود نود
15:44
Speaker A
أساسيات. بدي أضيف عناصر. بدي أروح أحكي الهيدر دوت جيت دوت ست نكست. راح أعمل أنا أول شيء راح أنشئ نيو نود جديدة. حأعطيها الإليمنت تبعي.
15:55
Speaker A
النيو نود النيو النيو نود هاي دوت ست يعني بدي أحط البريفيس تبعها راح يكون للهيدر لما أنا أجي أنشئها. والنكست تبعها لمين؟ للتريلر. تمام؟ يعني راح أعمل النيو نود النيوسنود حتأخذ قيمتها الإليمنت البريفيس الهيدر والنكست راح تكون للتريلر.
16:17
Speaker A
الهيدر بعدين راح أعمل هيدر على الـ الـ أبديت على الهيدر والتريلر مؤشراته. الهيدر دوت ست نكست للنيو إليمنت والبريفيس والـ التريلر دوت بريفيس اللي هو الـ المؤشر الـ الثاني إله اللي هو خلص راح يروح لمين؟ للإليمنت. فبصير أنا العملية العكسية هاي.
16:39
Speaker A
فنيجي نشوف بشكل أوضح على الرسومات هنا ونقرأ الكود. لو أنا بدي أعمل إنسيرت تمام لنود جديدة أنا فقط بحتاج إني إيش؟ أغير مؤشرات. ولو بدي أنا أحذف كمان خـ أحذف عنصر في الوسط أنا فقط راح أعمل أبديت على
16:54
Speaker A
الريفرنس اللي موجودين. فنيجي نقرأ هنا كود الـ أد بتوين. لو أنا بدي أضيف عنصر في الـ دبلي إيه في دبلي لينكيد ليست. راح أجي أعرف الـ الـ الـ أول شيء الـ الـ كونستركت الـ يعني الدالة إيش راح تأخذ؟ أد بتوين. راح تأخذ
17:10
Speaker A
الإليمنت. راح تأخذ النود الـ الـ السابق والنود التالي. السكسيسور هو التالي والبريسيدس والبريديسوس البريديسوس هو ال- السابق. رح تاخذ الإليمنت والنود السابق والنود التالي اللي اللي في المكان اللي أنا رح أحط فيه النود.
17:28
Speaker A
بعد هيك رح أعرف نود جديدة هو النيوس، تمام؟ نود جديدة فيها إليمنت وال- ورح البريفيوس إيه ريفرنس تبعها البريفيوس رح يكون هو السابق وال- التالي رح هو رح تاخذ النود ال- يعني رح تأشر على النود التالية إلها.
17:46
Speaker A
تمام؟ مثلًا هنا، هي أنا عرفت النود الجديدة ال- التالي إلها هو ال- النود هذا والسابق إلها النود الثاني. رح نشوفهم بشكل أوضح إن شاء الله ونتعامل معهم لما نقرأ الكود ونفهمه.
18:01
Speaker A
تمام؟ وبعد هيك رح أن- رح أغير المؤشرات. ال- السابق رح أخليه يأشر على النيوس، تمام؟ هي رح تأشر على النيوس وال- والتالي دوت ست بريفيوس رح يصير يأشر على ثمانية ليفلز.
18:17
Speaker A
فهي فكرة مين ال- إني أنا أعمل أد بتوين ل- في بين يعني ل- نود في دبل لينكيد ليست.
18:24
Speaker A
لو بدي أحذف من دبل لينكيد ليست كيف رح يصير؟ أنا رح أعطيها النود اللي أنا بدي أحذفها، تمام؟ رح أخزن السابق إلها اللي هو عبارة عن النود دوت جيت بريفيوس ورح أخزن التالي إلها اللي هو عبارة عن النود دوت
18:39
Speaker A
جيت نيكست، تمام؟ بعد هيك السابق السابق بدي أخليه دوت ست نيكست على مين؟ على اللي هو التالي للنود اللي أنا بدي أحذفها اللي أنا خزنته في السكسيسور هنا.
18:54
Speaker A
والسكسيسور كمان بدي أخليه دوت ست بريفيوس على مين؟ على ال- ال- السابق للنود اللي أنا بدي أحذفها. هي هنا فقط لعبة مين؟ لعبة إني أنا أغير ريفرنسز. فبكون هنا الموضوع الكومبلكسيتي كثير كثير كثير أبسط. تمام؟ نيجي ناخذ سمري لللاب اللي إحنا عملناه
19:13
Speaker A
السمري إن شاء الله بناخذ إيه تطبيق عملي على موضوع الليست. الآن الـ السنجل لينكست ليست الريفرنسز الأساسيين اللي عندها اللي هو الإليمنت والنكست تمام؟ وهيد دوت تيل يعني الكلاس بيحتوي على هيد وعلى تيل والريفرنسز الأساسيين هو مين؟ النكست.
19:33
Speaker A
دوت الإليمنت والنكست. في السيركولر لينكست ليست اللي هو التيل دوت نكست هو اللي بيرجعلي مين؟ الهيد. في الدبلي لينكست ليست أنا في عندي ثري ريفرنسز اللي هو البريفيوس والإليمنت نفسه والنكست للإليمنت.
19:50
Speaker A
تمام؟ خلينا نيجي نشوف هنا تطبيق عملي راح نعمل إيه بلاي ليست صغيرة يعني كفكرة إني أنا أضيف وممكن أنتو تطوروا عليها وتوسعوها إيه لحالكم. الآن الـ الـ لينكست ليست في عندي مكتبة جاهزة في جافا اسمها لينكست ليست. فيها مجموعة من الفانكشن والدوال
20:11
Speaker A
اللي بتعملي أو بتخليني تساعدني إني أنشئ الوظائف لـ ثلاثة الـ الـ لينكست ليست اللي حكيناهم السنجلي والـ والدبلي والـ والسيركولر.
20:22
Speaker A
ففي البداية أنا أنشأت هنا الكلاس وهي الدالة مين؟ رحت عرفت لينكست ليست تمام؟ أنا استدعيت طبعًا المكتبة هذه من جافا دوت يوتل.
20:31
Speaker A
إيه بـ عملت بلاي ليست نوعها سترينج واستدعيتها من مكتبة اللينكست ليست وعملتلها إيه ليست جديدة فأنا هيك أنشأت ليست أنا في بالي صار في عندي ليست.
20:42
Speaker A
أد لاست معنى هذا الكلام آخر عنصر راح يكون في الليست هو البي. هنا راح يجي مثلًا فكرة الأد لاست في عناصر؟ لا فيش عناصر معناها أنشئ الـ الـ نود بي وبتأشر على نل.
20:55
Speaker A
تمام؟ أد لاست كمان مرة في عناصر؟ أه في عناصر بيروح بعد العنصر الأول بينشئ مين؟ السي يعني أنا حيصير في عندي هنا في هذه المرحلة راح أنشئ البي.
21:09
Speaker A
البي. تمام؟ رح يصير في عندي في الليست سونج بي. بعد هيك رح أضيف لللاست مين؟ سي، يعني أنا صار في عندي. الـ الـ الـ التيل الجديدة هو السي.
21:30
Speaker A
تمام؟ بعد هيك حكالي أدفيرست اللي هو ضيف في الأول إيه، فصار أنا في عندي الترتيب الأساسي لهم. إيه بهي الصورة.
21:39
Speaker A
تمام، بعد هيك اطبع الليست، لو أنا بدي اطبع الليست رح يكون أنا في عندي إيه بي.
21:45
Speaker A
سي. تمام؟ طيب، البلاي ليست هان. البلاي ليست في السطر 11 بدي اطبع البلاي ليست دوت جيت فيرست، مين رح يرجعلي؟ إيه.
21:57
Speaker A
لو أنا اطلعت هان الأول إيه. بعدين البلاي ليست دوت جيت لاست، مين رح يرجع؟ السي.
22:05
Speaker A
بعدين البلاي ليست دوت السايز تبعهم ثلاث. تمام؟ يعني هنا رح يطبعلي الفيرست تبعي هو الإيه.
22:14
Speaker A
واللاست تبعي هو السي. والسايز تبعي ثلاث. تمام. السطر 15 البلاي ليست هانا. تمام؟ الدوت أد، هي دالة جديدة بتقدروا أنتو تتعرفوا على الدوال الموجودين في هي المكتبة وتستخدموها، الدوت أد هي الدالة بتضيف إليمنت لإندكس معين. أد أت إندكس 1
22:37
Speaker A
الإليمنت سونج إكس، تمام؟ يعني بدي أروح أنا، هي عندي الزيرو، الإندكس زيرو. يعني أنا رح أضيف الإندكس، الإندكس 1 هو يعني هنا، تمام؟ لكن أنا بدي أعمل أبديت فرح يصير في أنا عندي إيه بعدين سونج.
22:52
Speaker A
إكس بعدين بي بعدين سي، فإيش رح يصير أنا عندي هنا؟ سونج إيه بعدين إكس بعدين بي بعدين سي، فهي الإندكس 1.
23:02
Speaker A
لو جيت أنا بدي أطبعها رح تطلع معي ال- ال- ليست كالتالي. لو أنا بدي أضيف السونغ إيه السونغ إكس خلص عادي بيرجع لي السونغ إكس وب- بترجع الليست زي ما كانت بالأول.
23:13
Speaker A
في عندي كمان دالة اسمها كونتنز، هي دالة ترو أو يعني بوليان بترجع ترو أو فولس. هل الليست بتحتوي على الأوبجيكت أو السونغ بي؟ طبعًا هي بتاخد أوبجيكت، أنا أعطيتها الأوبجيكت نص لأنه أنا خزنتها نصوص.
23:29
Speaker A
فعليًا هي بتحتوي على سونغ بي فرجعت لي ترو. في عندي دالة ت- يعني كمان دالة اللي هو إندكس أوف، بترجع لي الإندكس للأوبجيكت اللي أنا بمرر لها إياه. إيش الإندكس للأوبجيكت سي إيه سونغ سي؟ طبعًا أنا الأبديت الجديد رح تكون كالتالي زيرو واحد
23:46
Speaker A
اثنين، فرح يكون الإندكس تبعها اثنين. لو أنا جيت أشغل البرنامج هي رجعت لي إياهم زي ما إحنا خزنا. هي طبعت لي إياهم إيه بي سي في الأول.
23:59
Speaker A
ال- الأول عنصر هو إيه، آخر عنصر سي، الحجم تبعي ثلاثة، بعد هيك ال- الليست بعد ما أنا أضفت.
24:08
Speaker A
إيه ممكن أنا أرجع أطبعها هنا بعد الحذف. طبعًا بترجع لي هنا مين؟ الترو، وهي ال- الإندكس ل- السا- للسونغ سي.
24:19
Speaker A
تمام؟ هذا هو بخصوص اللاب تبعنا، بتقدروا أنتو توسعوا عليه على هذا ال- الموضوع بشكل أوسع وتطوروا عليه، تعملوا بلاي ليست كاملة.
24:30
Speaker A
طبعًا المكتبة اللي عرضناها أو اللي استخدمناها هنا من جافا إيه إحنا اللي بنيناه في اللاب اللي هو مثلًا السايز، دالة سايز ودالة إز إمتي نفس الإشي. هينا استخدمت هنا البلاي ليست دوت سايز هي نفسها اللي تعرفنا عليها في
24:45
Speaker A
اللاب، هي نفسها اللي موجودة في مكتبة اللينكد ليست اللي استدعيناها من جافا. ال- الفيرست واللاست، تمام؟ لاحظي هنا لما أنا استدعيت أول عنصر استدعيته ب- ب- دالة جيت فيرست وجيت لاست.
24:59
Speaker A
لكن في اللاب إحنا استخدمنا فيرست ولاست هم اللي بيرجعوا العناصر، لكن في المكتبة هاي دالة جيت فيرست وجيت لاست نفس الإشي، يعني هنا أنا بقدر أقول جيت فيرست فانكشن هي نفسها لمين؟ لفيرست لفيرست فانكشن، نفس الإشي بالنسبة لللاست.
25:30
Speaker A
إيه طبعًا إيه هنا لما أنا ضفت للبدايه أد فيرست وأد لاست نفس اللي تعرفنا عليهم في اللاب. ريموف فيرست في الـ في الـ في المكتبة هاي رح تكون إيه ريموف فيرست أو بول فيرست.
25:44
Speaker A
طبعًا بتقدروا أنتوا ترجعوا للدكشنري تبع الـ مكتبة اللينكد ليست في جافا وتطلعوا على الـ الميثود الموجودين.
25:51
Speaker A
إيه دالة روتيت هي الدالة بنيناها في اللاب. إيه الـ الدالة مثلًا الموجودة هنا أتوقع أنها أد لاست بتاخذ إيه ريموف فيرست تمام؟ بإمكانكم الإطلاع عليها وإنكم إيه تشوفوها.
26:06
Speaker A
الموضوع جدًا جدًا إيه سهل. إن وهنا السامري طلعنا عليه في اللاب وورك الموجود الموجود هنا، إحنا أنشأنا السنجلي ليست، أنا أنشأته لكن أنا بفضل إنكم أنتوا تنشئوه وتسلموه [تنحنُح] أو ممكن أبعث لكم إياه، بنشوف إن شاء الله كيف. إيه تجاوبوا على هاي الأسئلة
26:26
Speaker A
وترفقوها في ملف الواجب وإن شاء الله رح ينزل الأسايمنت وتكون كل الأمور واضحة بالنسبة لكم.
Topics:لينكد ليستسيركولر لينكد ليستهياكل البياناتجافاRound Robinجدولة المهامالدبل لينكد ليستدالة الروتيتعمارة الحاسبات

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 →