الفرق بين الصفائف والقوائم المرتبطة

Anonim

صفائف مقابل قوائم مرتبطة

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

هو مبين في الشكل 1 عبارة عن قطعة من التعليمات البرمجية تستخدم عادة للإعلان عن القيم وتعيينها إلى مصفوفة. الشكل 2 يصور كيف تبدو صفيف في الذاكرة.

يحدد الرمز أعلاه مصفوفة يمكنها تخزين 5 أعداد صحيحة ويتم الوصول إليها باستخدام الأرقام القياسية 0 إلى 4. إحدى الخصائص المهمة للمصفوفة هي أن المصفوفة بأكملها يتم تخصيصها ككتلة واحدة من الذاكرة ويحصل كل عنصر على مساحته الخاصة في مجموعة مصفوفة. مرة واحدة يتم تعريف صفيف، يتم إصلاح حجمه. حتى إذا لم تكن متأكدا من حجم الصفيف في وقت التحويل، سيكون لديك لتحديد مجموعة كبيرة بما فيه الكفاية لتكون في الجانب الآمن. ولكن، في معظم الوقت نحن في الواقع سوف تستخدم أقل عدد من العناصر مما خصصناه. لذلك كمية كبيرة من الذاكرة يضيع فعلا. من ناحية أخرى إذا كان "مجموعة كبيرة بما فيه الكفاية" ليست كبيرة فعلا بما فيه الكفاية، فإن البرنامج تعطل.

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

- 3>>
البيانات التالي

الشكل 3: عنصر من قائمة مرتبطة

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

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