الفرق بين قائمة الصفوف والقائمة المرتبطة الفرق بين
كيف يتم تخزين البيانات؟
قائمة الصفيف والقائمة المرتبطة هي مصطلحات شائعة عندما يتعلق الأمر بتخزين البيانات واسترجاعها. على الرغم من أن هناك الكثير من أجهزة التخزين، في نهاية المطاف، فإنها تعتمد على آلية التخزين. تضع آليتي التخزين هذه بياناتك في أجهزة التخزين وتستردها عند الحاجة. دعونا نلقي نظرة على كيفية تخزين البيانات في الذاكرة الخاصة بهم. تستخدم قائمة الصفيف وحدة تخزين متتابعة، ويتم تخزين القطع من البيانات واحدا تلو الآخر. وربما يكون هذا الشكل أبسط من التخزين - فهو يتجنب الخلط. نعم، يمكننا استرداد العنصر التالي أو البيانات من موقع الذاكرة التالي لقائمة صفيف؛ ومع ذلك، يتم تخزينه مع مساعدة من مؤشرات في القائمة المرتبطة. هنا نحن بحاجة إلى اثنين من مواقع الذاكرة للتخزين - واحدة للبيانات، والآخر للمؤشر. مؤشر يتناول موقع الذاكرة من البيانات التالية. يمكننا أن نفهم بسهولة أن القائمة المرتبطة أبدا يخزن البيانات بالتتابع. بدلا من ذلك، فإنه يستخدم آلية تخزين عشوائي. المؤشرات هي العناصر الرئيسية في تحديد مواقع البيانات في الذاكرة.
- 1>>صفيف ديناميكي والقائمة المرتبطة
لقد ناقشنا بالفعل كيفية وضع كل من آليات التخزين في البيانات ويمكننا أن نعطي مصطلح "صفيف ديناميكي" لخطة التخزين الداخلية قائمة صفيف. انها مجرد يضع قطع البيانات واحدا تلو الآخر -hence اسم - في حين أن القائمة المرتبطة يستخدم قائمة داخلية مع مساعدة من مؤشرات لتتبع البند التالي. ولذلك، فإنه يستخدم قائمة مرتبطة الداخلية، مثل قائمة منفردة أو مضاعفة مرتبطة لتبين لنا البيانات التالية.
--2>>استخدام الذاكرة
كما صفيف قائمة مخازن فقط البيانات الفعلية، نحن بحاجة إلى مساحة فقط للبيانات التي نقوم بتخزينها. على العكس من ذلك، في القائمة المرتبطة، ونحن نستخدم مؤشرات كذلك. لذلك، هناك حاجة إلى اثنين من مواقع الذاكرة، ويمكننا أن نقول أن القائمة المرتبطة تستهلك ذاكرة أكثر من قائمة صفيف. جانب مفيد من القائمة المرتبطة هو أنه لا يتطلب مواقع الذاكرة المستمرة لتخزين البيانات لدينا، بدلا من قائمة صفيف. المؤشرات قادرة على عقد موقف موقع البيانات التالي، ويمكننا حتى استخدام فتحات الذاكرة الصغيرة التي ليست مستمرة. عندما يتعلق الأمر استخدام الذاكرة، تلعب المؤشرات الدور الرئيسي في القائمة المرتبطة، وهكذا يفعل فعالية منها.
حجم قائمة الصفيف الأولية والقائمة المرتبطة
مع قائمة الصفيف، حتى قائمة فارغة يتطلب حجم 10، ولكن مع قائمة مرتبطة، نحن لسنا بحاجة إلى مثل هذا الفضاء الضخم. يمكننا إنشاء قائمة فارغة مرتبطة مع حجم 0. في وقت لاحق، يمكننا زيادة حجم حسب الحاجة.
استرجاع البيانات
استرجاع البيانات أكثر بساطة في قائمة الصفيف حيث يتم تخزينها بالتتابع. كل ما يفعله هو تحديد موقع البيانات الأول. من هناك، يتم الوصول إلى الموقع التالي بالتتابع لاسترداد بقية.فإنه يحسب مثل موقف البيانات الأولى + 'ن'، حيث 'ن' هو ترتيب البيانات في قائمة صفيف. تشير القائمة المرتبطة المؤشر الأولي للعثور على موقع البيانات الأول، ومن هناك يشير المؤشر المرتبط بكل بيانات للعثور على موقع البيانات التالي. عملية الاسترجاع تعتمد بشكل رئيسي على المؤشرات هنا، وأنها تظهر لنا فعليا موقع البيانات التالي.
الأخير من البيانات
تستخدم قائمة صفيف قيمة لاغية بمناسبة نهاية البيانات، في حين تستخدم قائمة مرتبط مؤشر فارغة لهذا الغرض. حالما يتعرف النظام على البيانات الفارغة، توقف قائمة الصفيف عملية استرجاع البيانات التالية. وبطريقة مماثلة، يتوقف المؤشر الفارغ النظام عن المتابعة إلى استرجاع البيانات التالي.
عكس الاجتياز
تسمح القائمة المرتبطة لنا باجتياز الاتجاهات العكسية بمساعدة ديسندليتيتراتور (). ومع ذلك، ليس لدينا مثل هذا المرفق في قائمة صفيف - اجتياز العكسي يصبح مشكلة هنا.
بناء الجملة
دعونا نلقي نظرة على بناء الجملة جافا لكل من آليات التخزين.
إنشاء قائمة الصفيف:
ليست أرايليستامبل = نيو أريليست ()؛
إضافة عناصر إلى قائمة الصفيف:
أريليستسامبل. إضافة ("NAME1")؛
Arraylistsample. إضافة ("NAME2")؛
هذه هي الطريقة التي ستبدو بها قائمة الصفيف الناتجة - [name1، name2].
إنشاء قائمة مرتبطة:
ليست لينكدليستمبل = نيو لينكدليست ()؛
إضافة عناصر إلى القائمة المرتبطة:
لينكدليستامبل. إضافة ("NAME3")؛
Linkedlistsample. إضافة ("NAME4")؛
هذه هي الطريقة التي ستظهر بها القائمة المرتبطة الناتجة - [name3، name4].
ما هو أفضل للحصول على أو البحث العملية؟
قائمة صفيف يأخذ O (1) الوقت لتشغيل أي بحث البيانات، في حين تأخذ القائمة المرتبطة ش O (ن) لن البحث عن البيانات عشر. لذلك، قائمة صفيف دائما يستخدم وقت ثابت لأي بحث البيانات، ولكن في القائمة المرتبطة، الوقت الذي يستغرقه يعتمد على موقف البيانات. لذلك، قوائم الصفيف دائما خيار أفضل لعمليات جيت أو سيرتش.
ما هو أفضل لعملية الإدراج أو الإضافة؟
كل من قائمة الصفيف والقائمة المرتبطة تأخذ وقت O (1) لإضافة البيانات. ولكن إذا كان المصفوفة ممتلئة، ثم قائمة صفيف يستغرق قدرا كبيرا من الوقت لتغيير حجمه ونسخ العناصر إلى أحدث واحد. وفي هذه الحالة، تكون القائمة المرتبطة هي الخيار الأفضل.
ما هو أفضل لإزالة العملية؟
تستغرق عملية الإزالة تقريبا نفس الوقت في كل من قائمة الصفيف والقائمة المرتبطة. في قائمة الصفيف، تقوم هذه العملية بحذف البيانات ثم تقوم بتحويل موضع البيانات لتشكيل المصفوفة الأحدث - يستغرق الوقت O (n). في القائمة المرتبطة، هذه العملية تعبر إلى بيانات معينة و مؤشرات مؤشر التغييرات لتشكيل القائمة الأحدث. الوقت لاجتياز وإزالة هو O (n) هنا أيضا.
ما هو أسرع؟
نحن نعلم أن قائمة صفيف تستخدم مصفوفة داخلية لتخزين البيانات الفعلية. لذلك، إذا تم حذف أي بيانات، ثم جميع البيانات القادمة يحتاج إلى تغيير الذاكرة.ومن الواضح أن هذا يتطلب قدرا كبيرا من الوقت ويبطئ الأمور. مثل هذا التحول الذاكرة غير مطلوب في القائمة المرتبطة، كل ما يفعله هو تغيير موقع المؤشر. لذلك، قائمة مرتبط أسرع من قائمة صفيف في أي نوع من تخزين البيانات. ومع ذلك، وهذا يعتمد بحتة على نوع العملية، ط. ه. لعملية جيت أو سيرتش، تستغرق القائمة المرتبطة وقتا أطول بكثير من قائمة مصفوفة. عندما ننظر إلى الأداء العام، يمكننا القول أن القائمة المرتبطة أسرع.
متى تستخدم قائمة صفيف وقائمة مرتبطة؟
قائمة الأنماط هي الأنسب لمتطلبات البيانات الصغيرة حيث تتوفر الذاكرة المستمرة. ولكن عندما نتعامل مع كميات هائلة من البيانات، توفر الذاكرة المتواصلة آليات تخزين البيانات، سواء كانت صغيرة أو ضخمة. بعد ذلك، تقرر أي واحد لاختيار - قائمة صفيف أو القائمة المرتبطة. يمكنك المضي قدما في قائمة صفيف عندما تحتاج فقط تخزين واسترجاع البيانات. ولكن قائمة يمكن أن تساعدك على أبعد من ذلك من خلال التلاعب البيانات. بمجرد أن تقرر عدد المرات التي تلاعب البيانات المطلوبة، فمن المهم للتحقق من نوع استرجاع البيانات التي عادة ما تؤدي. عندما يكون مجرد الحصول على أو البحث، ثم قائمة صفيف هو الخيار الأفضل. لعمليات أخرى مثل الإدراج أو الحذف، المضي قدما في القائمة المرتبطة.
دعونا نلقي نظرة على الاختلافات في شكل جدول.