


السمعة:
- إنضم11 أغسطس 2023
- المشاركات 11
- مستوى التفاعل 42
- النقاط 13
السلام عليكم ورحمة الله وبركاته
اليوم رح نتحدث عن موضوع جديد وهو linked list
قبل ما نبلش تعال ناخذ مثال عن شو رح يكون موضوعنا اليوم.
لو جيت وحكيتلك أنت لما تفتح على مشغل الموسيقى music player زي مثلاً ال Spotify أو SoundCloud وشغلت playlist قائمة أغاني لمغني معين على فرضًا فيهم 6 أغاني
احنا بنعرف انه بصير لحاله بس تخلص الأغنية بروح للي بعدها ..... طيب كيف ؟ كيف عرف انه هاي الأغنية هي بعد الأغنية الي شغالة ؟ .....
هون يا عزيزي بيجي دور ال linked list
ما هي اللينكد ليست ؟
هي عبارة عن إحدى عناصر هيكلة البيانات الخطية لكن ديناميكة العمل كيف ؟
مش حكينا عن المصفوفة خطية وثابتة static .... لانه المصفوفة عند انشاءها احنا بنحدد الحجم تاعها بالتالي رح تكون ثابتة وما بنقدر نغير حجمها
بينما اللينكد ليست ديناميكة يعني حجمها غير محدد بتقدر تضيف براحتك عليها
طيب تعال نروح ديب أكثر ونشوف اللينكد ليست من ايش بتتكون
بدي منك تتخيل انه عنا قطار وهذا القطار احنا بنعرف انه مربوط معه عدة مقطورات صح؟
طيب بدي منك تشوف ان المقطورة عبارة عن node نود والقطار كامل هو linked list
شو بنستنتج من هذا الحكي ؟ انه اللينكد ليست عبارة عن سلسلة من النود.
linked list is a collection of nodes
طيب نرجع لمقطورتنا الحبيبة احنا بنعرف انه مقطورة عن مقطورة بتختلف في منهم للجلوس والاستمتاع و في منهم محملين بالبضائع
رح نفهم هيك انه النود بتحتوي على الداتا
تمام هسا برضه المقطورة عشان تشبك مع مقطورة ثانية في أمامها coupler (مقرنة)
بالنود هاي بكون اسمها لينك
برمجياً رح نعمل كالآتي :
- رح ننشىء كلاس اسمه نود
- رح نعطيه two attributes الداتا واللينك
- كونتسركتر للتهئية
Java:
public class Node {
public int value;
public Node next;
public Node(int value) {
this.value = value;
this.next = null;
}
}
طيب احنا هيك خلصنا من المقطورة بدنا نيجي للقطار كامل وهو اللينكد ليست
احنا بنعرف انه مقطورة القطار الرئيسية بتكون في الأمام بدونها القطار ما بمشي صحيح ..
في اللينكد ليست رح يكون اسم الرئيسي هو head طبعاً برضه هي بالنهاية نود بس واصلة عندها واسطة ...
برمجياً :
- رح ننشئ كلاس لينكد ليست
- attribute الهيد
- كونتسركتر للتهيئة
Java:
public class LinkedList {
Node head;
public LinkedList(){
this.head = null;
}
}
طيب هيك خلص ؟ لا
ضل علينا كيف نربط المقطورات مع بعض ؟ مش حكينا عن ال coupler فوق اللينك وسميناه next كيف بدي اربطه باللينكد ليست نود مع نود
حنستخدم ال next عشان نعمل لينك بين النودز
Java:
public void insert(int value){
Node addNode = new Node(value);
addNode.next = head;
head = addNode;
}
شرح الكود :
أولًا هذا ميثود بداخل اللينكد ليست كلاس
أول شي بدي انشئ نود (مقطورة)
بعدين رح احكي للمقطورة انت رح اربطك مع المقطورة الرئيسية وهكذا في كل مرة
الكود النهائي
Java:
public class Node {
public int value;
public Node next;
public Node(int value) {
this.value = value;
this.next = null;
}
}
public class LinkedList {
Node head;
public LinkedList(){
this.head = null;
}
public void insert(int value){
Node addNode = new Node(value);
addNode.next = head;
head = addNode;
}
public String toString(){
String result = "";
Node current = head;
while (current != null) {
result += "{ " + current.value + " } -> ";
current = current.next;
}
result += "NULL";
return result;
}
}
التعديل الأخير بواسطة المشرف: