القائمة المرتبطة في لغة البرمجة JavaScript

اقرأ في هذا المقال


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

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

القائمة المرتبطة في (JavaScript) هي بنية بيانات تخزن مجموعة من البيانات المرتبة التي لا يمكن الوصول إليها إلا بالتسلسل، حيث يتكون عنصر البيانات (node) من بعض المعلومات والمؤشر، على عكس المصفوفة، لا يتم تخزين عناصر البيانات في قائمة مرتبطة في مواقع ذاكرة متجاورة، وبالتالي لا يمكن الوصول إليها عشوائيًا.

ما هي خصائص القوائم المرتبطة

فيما يلي خصائص القوائم المرتبطة في لغة البرمجة جافا سكريبت:

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

ما هي أنواع القوائم المرتبطة

فيما يلي أنواع القوائم المرتبطة:

1. قائمة مرتبطة بشكل فردي

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

2. قائمة مرتبطة بشكل مضاعف

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

3. قائمة مرتبطة دائرية

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

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

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

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

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

يوجد عدة عيوب للقائمة المرتبطة، وهي:

  • عدم وجود وصول عشوائي: القائمة المرتبطة ليس لديها وصول عشوائي إلى أي عقدة (node)، يمكننا فقط العبور بالتسلسل.
  • إدارة المؤشرات: تقوم العقد (nodes) للقائمة المرتبطة بتخزين البيانات والمؤشر، وهو عبارة عن عبء كامل لأنه لا يخزن أي بيانات مفيدة من وجهة نظر المستخدم.
  • مشكلة الانتقال العكسي: حيث لا تسمح القوائم المرتبطة بالاجتياز العكسي، على الرغم من أنه يمكننا استخدام قوائم مرتبطة بشكل مزدوج لتحقيق ذلك، إلا أن هذا سيضيف عبئًا على الذاكرة لتخزين المؤشرات الإضافية.

المصدر: JavaScript: The Good Parts,Douglas Crockford, 2008 edition .JavaScript: The Definitive Guide,David Flanagan, 2011 edition .PROFESSIONAL JAVASCRIPT: FOR WEB DEVELOPERS,Nicholas C. Zakas,2012 edition.A Smarter Way to Learn JavaScript / Author: Mark Myers


شارك المقالة: