هياكل البيانات الثابتة والديناميكية Static vs Dynamic data structures

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


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

ما هي هياكل البيانات الثابتة؟

من الأمثلة الجيدة على هياكل البيانات الثابتة المصفوفة، يتم تعريف المصفوفة بحجم معين، على سبيل المثال قد تكون قادرة على تخزين (10) عناصر، هنا الحجم ثابت، ولا يمكن أن يزيد أو يقل عن العدد الذي تم تعريفه لحجم المصفوفة (10 في هذه الحالة).

هياكل البيانات الثابتة بسيطة، وتستخدم الحد الأدنى من الذاكرة المطلوبة لتخزين البيانات، في الإصدارات المبكرة للغات مثل لغة (C)، قدم الـ (compiler) فقط هياكل بيانات ثابتة مثل المصفوفات و(strings)، وإذا احتاج المبرمجون إلى هياكل ديناميكية، فسوف يستخدمون مكتبة خارجية أو يكتبون ببساطة الكود الخاص بهياكل ديناميكية.

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

ما هي هياكل البيانات الديناميكية؟

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

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

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


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