مضى على الشبكة و يوم من العطاء.

Linked List

Shanab

{ | مشرف قسم لغات البرمجة | }
.:: طاقم المشرفين ::.

السمعة:

السلام عليكم ورحمة الله وبركاته

اليوم رح نتحدث عن موضوع جديد وهو linked list
قبل ما نبلش تعال ناخذ مثال عن شو رح يكون موضوعنا اليوم.
لو جيت وحكيتلك أنت لما تفتح على مشغل الموسيقى music player زي مثلاً ال
Spotify أو SoundCloud وشغلت playlist قائمة أغاني لمغني معين على فرضًا فيهم 6 أغاني
احنا بنعرف انه بصير لحاله بس تخلص الأغنية بروح للي بعدها ..... طيب كيف ؟ كيف عرف انه هاي الأغنية هي بعد الأغنية الي شغالة ؟ .....
هون يا عزيزي بيجي دور ال linked list

ما هي اللينكد ليست ؟
هي عبارة عن إحدى عناصر هيكلة البيانات الخطية لكن ديناميكة العمل كيف ؟
مش حكينا عن المصفوفة خطية وثابتة static .... لانه المصفوفة عند انشاءها احنا بنحدد الحجم تاعها بالتالي رح تكون ثابتة وما بنقدر نغير حجمها
بينما اللينكد ليست ديناميكة يعني حجمها غير محدد بتقدر تضيف براحتك عليها

طيب تعال نروح ديب أكثر ونشوف اللينكد ليست من ايش بتتكون
بدي منك تتخيل انه عنا قطار وهذا القطار احنا بنعرف انه مربوط معه عدة مقطورات صح؟
طيب بدي منك تشوف ان المقطورة عبارة عن node نود والقطار كامل هو
linked list
شو بنستنتج من هذا الحكي ؟ انه اللينكد ليست عبارة عن سلسلة من النود.
linked list is a collection of nodes

طيب نرجع لمقطورتنا الحبيبة احنا بنعرف انه مقطورة عن مقطورة بتختلف في منهم للجلوس والاستمتاع و في منهم محملين بالبضائع
رح نفهم هيك انه النود بتحتوي على الداتا
تمام هسا برضه المقطورة عشان تشبك مع مقطورة ثانية في أمامها coupler (مقرنة)
بالنود هاي بكون اسمها لينك

برمجياً رح نعمل كالآتي :

  1. رح ننشىء كلاس اسمه نود
  2. رح نعطيه two attributes الداتا واللينك
  3. كونتسركتر للتهئية
Java:
public class Node {
    public   int value;
    public  Node next;

    public  Node(int value) {
        this.value = value;
        this.next = null;
    }
}

طيب احنا هيك خلصنا من المقطورة بدنا نيجي للقطار كامل وهو اللينكد ليست
احنا بنعرف انه مقطورة القطار الرئيسية بتكون في الأمام بدونها القطار ما بمشي صحيح ..
في اللينكد ليست رح يكون اسم الرئيسي هو head طبعاً برضه هي بالنهاية نود بس واصلة عندها واسطة ...
برمجياً :

  1. رح ننشئ كلاس لينكد ليست
  2. attribute الهيد
  3. كونتسركتر للتهيئة
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;
    }
}
 
التعديل الأخير بواسطة المشرف:
بارك الله فيك على هذا الطرح الرائع والمعلومة القيمة
 
بارك الله فيك امور مهمه للمتعلم مع ان هناك مكتبات تخص هذي الامور لكن المعرفه اهم قبل اختصار جهده واستخدام المكتبات .

وابسط طريق لفهم هياكل البيانات التعامل مع بايثون هيا تسهل عليك فهمها ..

واجمل الامور الاستمتاع بلغة ++C متعة البرمجة .

اتمنى المزيد مثل هذي المفاهيم
 
بارك الله فيك امور مهمه للمتعلم مع ان هناك مكتبات تخص هذي الامور لكن المعرفه اهم قبل اختصار جهده واستخدام المكتبات .

وابسط طريق لفهم هياكل البيانات التعامل مع بايثون هيا تسهل عليك فهمها ..

واجمل الامور الاستمتاع بلغة ++C متعة البرمجة .

اتمنى المزيد مثل هذي المفاهيم
بأذن الله رح يكون في مواضيع لشرح هياكل البيانات بمختلف مواضيعها
 

آخر المشاركات

فانوس

رمضان
عودة
أعلى