This post is also available in: English (الإنجليزية)
تستخدم جميع برامج الكمبيوتر تقريبًا نوعًا واحدًا أو نوعًا آخر من بنية البيانات. هناك أنواع مختلفة من هياكل البيانات التي تناسب أنواعًا مختلفة من التطبيقات. سنناقش هنا هياكل البيانات الأساسية التي ستكون مفيدة في برمجة الأطفال.
ما المقصود بهيكل البيانات؟
في علوم الكمبيوتر ، تعد بنية البيانات طريقة لتنظيم البيانات في الكمبيوتر بحيث يمكن استخدامها بكفاءة. نقصد بالكفاءة عمليات الكمبيوتر التي يجب تنفيذها باستخدام موارد قليلة ، من حيث وقت التنفيذ والذاكرة.
هياكل البيانات هي تنفيذ أنواع البيانات المجردة في بيئة ملموسة ومادية. يفعلون ذلك باستخدام الخوارزميات.
أنواع هياكل البيانات
تتناسب أنواع مختلفة من هياكل البيانات مع أنواع مختلفة من التطبيقات ، وبعضها متخصص بدرجة عالية في مهام معينة. يعد العثور على أفضل بنية بيانات عند حل مشكلة جزءًا مهمًا من البرمجة. تعتبر الأشجار B مناسبة تمامًا لتنفيذ قواعد البيانات بينما تعتمد جداول التوجيه على شبكات الأجهزة للوظائف.
يتم تصنيف هياكل البيانات على نطاق واسع على أنها هياكل بيانات خطية وغير خطية.
- تحتوي بنية البيانات الخطية على عناصر بيانات مرتبة بشكل تسلسلي وكل عنصر عضو متصل بعنصره السابق والتالي. يكون الاجتياز ، في هذه الحالة ، تسلسليًا ، مما يعني أنه إذا أراد المرء زيارة العنصر رقم 100 ، فعليه المرور عبر العناصر الـ 99 السابقة. من السهل تنفيذ هياكل البيانات هذه لأن ذاكرة الكمبيوتر متسلسلة أيضًا. أمثلة هياكل البيانات الخطية هي Array و Linked List و Stack و Queue.
- لا تحتويبنية البيانات غير الخطية على تسلسل محدد للاتصال بجميع عناصرها ويمكن أن يكون لكل عنصر مسارات متعددة للاتصال بالعناصر الأخرى. يمكن أن يتم الاجتياز من عنصر إلى آخر ، في هذه الحالة ، بعدة طرق. هياكل البيانات هذه ليست سهلة التنفيذ ولكنها أكثر كفاءة في استخدام ذاكرة الكمبيوتر. أمثلة على هياكل البيانات غير الخطية هي الشجرة والرسوم البيانية وجدول التجزئة.
دعونا نفهم هياكل البيانات المختلفة.
1.مجموعة مصفوفة
المصفوفةهي أبسط أنواع بنية البيانات. إنه نوع بيانات خطي. تحتوي المصفوفة على عدة قيم من نفس نوع البيانات (عدد صحيح ، عدد عشري ، سلسلة ، إلخ). عادة ما تكون المصفوفة ذات حجم ثابت. بعد تحديد حجم المصفوفة في البداية ، لا يمكن زيادة حجم المصفوفة.
تتكون المصفوفة من عدة عناصر ، يتم تحديد كل منها بواسطة فهرس مصفوفة أو مفتاح. يمكنك إجراء أي نوع من العمليات الحسابية باستخدام فهرس.
دعونا ننظر في مجموعة من الأعداد الصحيحة بحجم 10. يمكن تصور تنظيم العناصر على النحو التالي:
25 | 13 | 0 | -16 | 14 | 38 | -65 | 42 | 97 | 38 |
إذا أطلقنا على هذه المصفوفة اسم “a” ، فيمكن الوصول إلى القيمة 14 كـ [5] ، حيث يُطلق على 5 اسم فهرس المصفوفة أو مفتاح.
في العديد من لغات البرمجة ، يُشار إلى المركز الأول بالفهرس 0. في مثل هذه الحالة ، يمكن الوصول إلى القيمة 14 باعتبارها [4].
تعد المصفوفات من بين أقدم وأهم هياكل البيانات ويتم استخدامها بواسطة كل برنامج تقريبًا. يمكن استخدامها أيضًا لتنفيذ العديد من هياكل البيانات الأخرى ، مثل القوائم المرتبطة.
بعض تطبيقات المصفوفة هي:
- ورقة الأسئلة البسيطة عبارة عن مجموعة من الأسئلة المرقمة مع تخصيص بعض العلامات لكل منها.
- تُستخدم المصفوفات ثنائية الأبعاد (المصفوفات ثنائية الأبعاد) ، المعروفة باسم المصفوفة ، في معالجة الصور.
- يتم استخدامه أيضًا في معالجة الكلام ، حيث تكون كل إشارة كلام عبارة عن مصفوفة.
2. قائمة مرتبطة
القائمة المرتبطةهي مجموعة من المعلومات / البيانات مرتبطة ببعضها البعض بواسطة مراجع. غالبًا ما تسمى البيانات بالعقد. غالبًا ما تسمى المراجع روابط أو مؤشرات.
يمكن للعقد تخزين أي نوع من البيانات (عدد صحيح ، عدد عشري ، سلسلة). على عكس المؤشرات في المصفوفات ، لا يمكن زيادة المؤشرات الموجودة في القائمة المرتبطة أو إنقاصها (الجمع والطرح).

بعض تطبيقات القائمة المرتبطة هي:
- ترتبط الصور ببعضها البعض بحيث يستخدم برنامج عارض الصور قائمة مرتبطة لعرض الصور السابقة والتالية باستخدام الزرين السابق والتالي.
- يمكن الوصول إلى صفحات الويب باستخدام روابط URL السابقة والتالية المرتبطة باستخدام قائمة مرتبطة.
- تستخدم مشغلات الموسيقى أيضًا قائمة مرتبطة للتبديل بين الموسيقى.
- لتتبع الأدوار في لعبة متعددة اللاعبين ، يتم استخدام قائمة دائرية مرتبطة.
3. المكدس
المكدس هو أيضًا بنية بيانات خطية ممثلة بمكدس فعلي حقيقي أو كومة. في حالة المكدس ، يتم إدراج العناصر وحذفها في نهاية واحدة تسمى الجزء العلوي من المكدس.
يمكن توضيح المفهوم الأساسي للمكدس من خلال التفكير في مجموعة البيانات الخاصة بك على أنها مجموعة من الكتب حيث يمكنك فقط إزالة العنصر العلوي من المكدس لإزالة الكتب منه. أيضًا ، يمكنك وضع كتاب جديد في الأعلى فقط. يسمى هذا النوع من الوصول إلى البيانات “Last In First Out”. هذا هو السبب في تسمية الحزم أيضًا بقوائم LIFO.

يمكن إجراء ثلاث عمليات على مكدسات:
- إدخال (“دفع”) عنصر في كومة.
- حذف (“ظهرت”) عنصر من المكدس.
- عرض محتويات العنصر الأعلى في المكدس (“نظرة خاطفة”).
بعض تطبيقات المكدس هي:
- تحويل infix إلى تعبيرات postfix.
- يتم تنفيذ عمليات التراجع والإعادة من خلال الحزم.
- يتم تحليل الصيغ في اللغات باستخدام مكدسات.
- يتم استخدام المكدس في العديد من الأجهزة الافتراضية مثل JVM (Java Virtual Machine).
4. قائمة الانتظار
قائمة الانتظار هي بنية بيانات خطية ، يتم فيها إدراج العناصر من طرف يسمى “الذيل” ويتم حذف العناصر الموجودة من الطرف الآخر المسمى “الرأس”. يسمى هذا النوع من عملية وضع العناصر وإزالتها “First In First Out” وبالتالي فإن قائمة الانتظار هي بنية FIFO يتم فيها إخراج العنصر الذي تم إدخاله أولاً أولاً. من الأمثلة الشائعة جدًا على قائمة الانتظار طوابير الأشخاص الذين ينتظرون عند عدادات البنك ، وعدادات الحجز ، وما إلى ذلك. يتم تقديم أول شخص في الصف الذي يذهب أولاً أولاً بينما يتم تقديم آخر شخص في الصف الأخير.

تسمى عملية إضافة عنصر إلى قائمة الانتظار “enqueuing” وعملية إزالة عنصر من قائمة انتظار تسمى “dequeuing”.
بعض تطبيقات القائمة المرتبطة هي:
- يستخدم نظام التشغيل قائمة انتظار لجدولة المهام.
- يمكن استخدام للتعامل مع الازدحام في قائمة انتظار الشبكات.
- يتم ترتيب حزم البيانات في الاتصال بتنسيق قائمة الانتظار.
5. الرسم البياني
الرسم البياني هو بنية بيانات خطية حيث يمكن للمرء أن ينتقل من عقدة إلى أخرى بعدة طرق مختلفة.
تتكون بنية بيانات الرسم البياني من مجموعة محدودة من الأزواج المرتبة ، تسمى الحواف أو الأقواس ، لكيانات معينة تسمى العقد أو الرؤوس. كما هو الحال في الرياضيات ، يقال أن الحافة (x ، y) تشير أو تنتقل من x إلى y ، على سبيل المثال حافة (جانب) مثلث تصل بين رأسيها.
قد تكون العقد جزءًا من بنية الرسم البياني أو قد تكون كيانات خارجية ممثلة بمؤشرات أو مراجع عدد صحيح. قد ترتبط بنية بيانات الرسم البياني أيضًا بكل حافة ببعض قيم الحافة ، مثل تسمية رمزية أو جدول بيانات رقمي.

بعض تطبيقات الرسم البياني هي:
- تستخدم واجهة برمجة تطبيقات الرسم البياني في Facebook بنية الرسوم البيانية.
- يستخدم الرسم البياني المعرفي من Google أيضًا مفهوم الرسوم البيانية.
- تستخدم خوارزمية Dijkstra (أقصر خوارزمية مسار) بنية رسم بياني للعثور على أقصر مسار بين العقد.
- يستخدم نظام الملاحة GPS(نظام تحديد المواقع العالمي) رسمًا بيانيًا.
6. شجرة
الشجرة هي واحدة من أقوى هياكل البيانات وأكثرها تقدمًا. يتم استخدامه في الذكاء الاصطناعي (AI) والتصميم. الشجرة عبارة عن بنية بيانات هرمية غير خطية تتصل فيها العقد في الحواف.
في الشجرة على عكس هياكل البيانات الخطية ، يمكن للمرء أن ينتقل من عقدة إلى أخرى بعدة طرق مختلفة. تتكون الشجرة من عقد (تحتوي على البيانات) وحواف تربط العقد.

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

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