كيفية تنفيذ قائمة مرتبطة في بايثون؟



توضح هذه المقالة كيف يمكنك إنشاء قائمة مرتبطة في Python بطرق مختلفة لإدراج التحديث وإزالة العناصر في القائمة المرتبطة.

لغة برمجة Python هي لغة مفتوحة المصدر مع تطبيقات مختلفة تجعلها فريدة وسهلة التعلم. برغم من لا يدعم مفهوم القائمة المرتبطة ، فهناك طريقة للتغلب عليها من خلال تطبيق مختلف للحصول على قائمة مرتبطة. في هذه المقالة ، سوف نتعلم كيف يمكننا إنشاء قائمة مرتبطة في Python. فيما يلي المواضيع التي تم تناولها في هذه المدونة:

هيا نبدأ!!





ما هي القائمة المرتبطة؟

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

القائمة المرتبطة هي بنية بيانات خطية مع مجموعة من العقد المتعددة. أين هيخزن عنصر ach بياناته الخاصة ومؤشرًا إلى موقع العنصر التالي. يشير الرابط الأخير في قائمة مرتبطة إلى قيمة خالية ، مما يشير إلى نهاية السلسلة. عنصر في قائمة مرتبطة يسمى العقدة . العقدة الأولى تسمى رئيس .العقدة الأخيرة تسمىال ذيل .
قائمة مرتبطة - قائمة مرتبطة في Python - edurekaلا تحتوي مكتبة python القياسية على قائمة مرتبطة. يمكننا تنفيذ مفهوم بنية بيانات قائمة الارتباط باستخدام مفهوم العقد.



كيفية مزج البيانات في اللوحة

الآن بعد أن تعلمنا ما هو مرتبط. لذلك دعونا ننتقل إلى تنفيذ قائمة مرتبطة.

تنفيذ قائمة مرتبطة

لإنشاء قائمة مرتبطة ، نقوم بإنشاء كائن عقدة وإنشاء فئة أخرى لاستخدام كائن العقدة هذا.
كود لإنشاء فئة العقدة.
يقوم البرنامج أعلاه بإنشاء قائمة مرتبطة بثلاثة عناصر بيانات.

عقدة الفئة (كائن): # مُنشئ لبدء متغيرات الفئة def __init __ (self ، data = None ، next_node = None): self.data = data self.next_node = next_node #get data def get_data (self): return self.data # الحصول على القيمة التالية def get_next (self): return self.next_node # set next data def set_next (self، new_next): self.next_node = new_next

يتكون تنفيذ قائمة الارتباط من الوظائف التالية في قائمة مرتبطة
واحد. إدراج : ستدرج هذه الطريقة عقدة جديدة في قائمة مرتبطة.
2. بحجم : ستعيد هذه الطريقة حجم القائمة المرتبطة.
3. بحث : ستعيد هذه الطريقة عقدة تحتوي على البيانات ، وإلا ستظهر خطأ
أربعة. حذف : ستحذف هذه الطريقة عقدة تحتوي على البيانات ، وإلا ستؤدي إلى حدوث خطأ



دعونا نرى طرق القائمة المرتبطة

طريقة التهيئة في قائمة مرتبطة

فئة LinkedList (كائن): def __init __ (self، head = None): self.head = head

يتم استخدام طريقة التهيئة لتهيئة ملف صف دراسي متغير إذا كانت القائمة لا تحتوي على عقد يتم تعيينها على لا شيء.

إدراج:

إدراج def (self ، data): new_node = عقدة (بيانات) new_node.set_next (self.head) self.head = new_node

تأخذ طريقة الإدراج هذه البيانات وتهيئ عقدة جديدة بالبيانات المحددة وتضيفها إلى القائمة. من الناحية الفنية ، يمكنك إدراج عقدة في أي مكان في القائمة ، ولكن أبسط طريقة للقيام بذلك هي وضعها في رأس القائمة وتوجيه العقدة الجديدة إلى الرأس القديم (نوع من دفع العقد الأخرى لأسفل الخط).

بحجم

# تُرجع إجمالي عدد العقدة في حجم تعريف القائمة (ذاتي): الحالي = self.head count = 0 بينما الحالي: count + = 1 current = current.get_next () عدد مرات الإرجاع

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

بحث

# إرجاع العقدة في القائمة التي تحتوي على nodeData ، حدث خطأ إذا كانت العقدة غير موجودة البحث def (self ، nodeData): current = self.head isPresent = False while current and isPresent is False: if current.get_data () == nodeData: isPresent = True else: current = current.get_next () إذا كان الحالي لا شيء: زيادة ValueError ('البيانات غير موجودة في القائمة') إرجاع التيار

البحث في الواقع مشابه جدًا للحجم ، ولكن بدلاً من اجتياز قائمة العقد بأكملها ، فإنه يتحقق في كل محطة لمعرفة ما إذا كانت العقدة الحالية تحتوي على البيانات المطلوبة. إذا كان الأمر كذلك ، يتم إرجاع العقدة التي تحتفظ بهذه البيانات إذا مرت الطريقة عبر القائمة بأكملها ولكن لم تعثر على البيانات بعد ، فإنها تثير خطأ في القيمة وتُعلم المستخدم بأن البيانات ليست في القائمة.

حذف

# إزالة العقدة من القائمة المرتبطة ترجع خطأ إذا كانت العقدة غير موجودة حذف def (self، nodeData): current = self.head السابق = لا شيء isPresent = False بينما Current and isPresent is False: if current.get_data () == nodeData: isPresent = صحيح آخر: السابق = التيار الحالي = الحالي. current.get_next ())

تعبر طريقة الحذف القائمة بنفس الطريقة التي يمر بها البحث ، ولكن بالإضافة إلى تتبع العقدة الحالية ، تتذكر طريقة الحذف أيضًا آخر عقدة تمت زيارتها. عندما يصل الحذف أخيرًا إلى العقدة التي تريد حذفها. إنه يزيل ببساطة تلك العقدة من السلسلة عن طريق 'القفز' عليها.

أعني بهذا أنه عندما تصل طريقة الحذف إلى العقدة التي تريد حذفها ، فإنها تبحث في آخر عقدة زارتها (العقدة 'السابقة') وتعيد تعيين مؤشر تلك العقدة السابقة. بدلاً من الإشارة إلى العقدة التي سيتم حذفها قريبًا.

سيشير إلى العقدة التالية في السطر. نظرًا لعدم وجود عقد تشير إلى العقدة الضعيفة التي يتم حذفها ، يتم إزالتها بشكل فعال من القائمة!

يقودنا هذا إلى نهاية هذه المقالة حيث تعلمنا كيف يمكننا إنشاء قائمة مرتبطة في Python مع تطبيق مماثل على الرغم من أن Python لا يدعم حقًا مفهوم القائمة المرتبطة. آمل أن تكون واضحًا بشأن كل ما تمت مشاركته معك في هذا البرنامج التعليمي.

إذا وجدت هذه المقالة ذات الصلة بـ 'قائمة مرتبطة في Python' ، فراجع ملف شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250000 متعلم راضٍ منتشرة في جميع أنحاء العالم.

نحن هنا لمساعدتك في كل خطوة في رحلتك والتوصل إلى منهج مصمم للطلاب والمهنيين الذين يريدون أن يكونوا . تم تصميم الدورة التدريبية لمنحك بداية قوية في برمجة Python وتدريبك على مفاهيم Python الأساسية والمتقدمة جنبًا إلى جنب مع العديد مثل

إذا صادفت أي أسئلة ، فلا تتردد في طرح جميع أسئلتك في قسم التعليقات في 'قائمة مرتبطة في Python' وسيسعد فريقنا بالإجابة.