هياكل البيانات

ماهى هياكل البيانات Data Structure ؟

ماهى هياكل البيانات فى البرمجة ؟

هياكل البيانات هي طريقة لجمع البيانات وتنظيمها بطريقة تمكننا من إجراء عمليات على هذه البيانات بطريقة فعالة.

بشكل مبسط هياكل البيانات تعتمد على تصميم عملية التخزين فى الحاسب بطريقة فعالة وغير معقد ليدعم نوع البيانات المراد تخزينها ليعمل الكود او الخوارزمية بطريقة اسرع واكثر كفاءة.

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

هياكل البيانات لها اهمية كبيرة فى لادارة والتعامل مع كميات ضخمة من البيانات بفاعلية.

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

تطبيقات هياكل البيانات

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

فمثلًا تستخدم مواقع التواصل الاجتماعى نوع من هياكل البيانات يسمى جراف Graph وهذا النوع مناسب لتمثيل البيانات المتصلة ببعضها فعلى سبيل المثال المستخدمين فى فيس بوك حيث يمكن تمثيل كل شخص فى عقدة والحواف بينهم تمثل العلاقة مع مستخدم ا خر.

استخدام graph فى فيس بوك
استخدام graph فى فيس بوك

انواع هياكل البيانات فى لغات البرمجة

يوجد نوعان من هياكل البيانات النوع الاول وهو النوع البدائى او Primitive والنوع الثانى هو النوع المعقد وهو مكون من النوع البدائى.

النوع البدائى هو طريقة لتصنيف أنواع مختلفة من البيانات مثل الأعداد الصحيحة ، والسلاسل الحرفية او النصوص ، وعليه يتم تحديد العمليات المستخدمة بين انواع البيانات المختلفة.

فمثلًا انواع البيانات من نوع الاعداد الصحيحة Integers يكمن اجراء العمليات الحسابية المختلفة عليها.

بينما فى حالة النصوص يمكن دمج النصوص.

ثم لدينا أيضًا هياكل البيانات المعقدة ، والتي يتم استخدامها لتخزين البيانات الكبيرة والبيانات التى بينها علاقة او متصلة.

أمثلة على هياكل البيانات

  • Array
  • Linked List
  • Graph
  • Stack, Queue
  • Tree

كل نوع منها له خصائص معينة ويسمح لنا كل نوع بعمليات مختلفة على البيانات والاختيار يكون على حسب طبيعة البيانات.

معرفة المزيد عن انواع البيانات

الخوارزميات فى  البرمجة

الخوارزميات هى مجموعة من الخطوات والاوامر الواضحة التى تكتب لحل مشكلة برمجية معينة , ويقال ان الخوارزمية جيدة اذا كانت سريعة فى التنفيذ ولها كفاءة عالية فى التخزين.

معرفة المزيد عن الخوارزميات فى البرمجة

شرح هياكل البيانات المختلفة

هيكل بيانات المصفوفة Arrays

من هياكل البيانات المهمة فى البرمجة والمستخدمة كثيرًا فى الخوارزميات المختلفة , وهى عدد ثابت من العناصر المخزنة و التى يكون لها نفس النوع , وكل عنصر من عناصر المصفوفة له رقم او فهرس Index ويتم تخزين المصفوفة بشكل متجاور فى الذاكرة.

يمكننا الوصول إلى كل عنصر من المصفوفة لتعديله اوحذفه اوالحصول على قميته عن طريق هذا الفهرس Index.

يمكن كتابة الكود لاعلان المصفوفة بطرق مختلفة على حسب اللغة المستخدمة على سبيل المثال فى لغة C يكون كود اعلان المصفوفة كالتالى :

int array[6] = {35,33,42,10,14,50}

حيث يمثل int نوع البيانات داخل المصفوفة وفى هذه الحالة رقم صحيح Integer. 

ويمثل array اي اسم اختيار للمصفوفة.

ويمثل 6 عدد العناصر المحجوزة فى المصفوفة.

وتمثل الارقام بين علامة {} الاعداد الصحيحة التى تمثل عناصر المصفوفة ويفصل بينهم ب ,

ولكل عنصر من عناصر المصفوفة فهرس او رقم يبدء من 0 حتى اخر عنصر , ففى مثالنا السابق العنصر 35 له Index = 0 

وهكذا وصولًا للعنصر 19 الذى له Index = 5. 

والفهرس او Index مهم كما قلنا للوصول إلى العنصر للتحكم فيه.

هيكل بيانات القوائم المرتبطة Linked List

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

Linkedlist القوائم المرتبطة

هيكل بيانات Stack او المكدس

يعد الـ Stack أو المكدس هو هيكل بيانات يتيح إدارة البيانات بطريقة خاصة.
يمكن وصف الـ Stack بأنه هيكل بيانات يستخدم مبدأ الـ Last-In-First-Out (LIFO)، حيث يتم إضافة العناصر إلى الـ Stack في نهايته ويتم إزالتها من نفس النهاية (من يدخل أخيرًا يخرج أخيرًا).
وتسمى هذه النهاية بـ Top أو رأس الـ Stack.

يمكن للـ Stack أن تقوم بثلاثة أنواع من العمليات الأساسية، وهي:

  1. الإضافة (Push): وهي عملية إضافة عنصر جديد إلى رأس الـ Stack.
  2. الحذف (Pop): وهي عملية حذف العنصر الذي يقع على رأس الـ Stack.
  3. الاطلاع (Peek): وهي عملية استعراض العنصر الذي يقع على رأس الـ Stack دون حذفه.

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

وعلى الرغم من بساطة الـ Stack، إلا أنه يعتبر من الهياكل البيانية الأساسية والأكثر استخدامًا في العديد من التطبيقات البرمجية.

صورة لتوضيح مفهوم هياكل البيانات
صورة توضح Stack فى هياكل البيانات

هيكل بيانات الطابور Queue

يتميز هيكل بيانات الطابور بأنه يتم معالجة العناصر فيه بناءً على مبدأ First-In-First-Out (FIFO)، حيث يتم إضافة العناصر في نهاية الطابور ويتم حذفها من بدايته.
ويسمى الطرف الذي يتم إضافة العناصر إليه بـ Rear أو الذيل، والطرف الذي يتم حذف العناصر منه بـ Front أو الرأس.

تحتوي هيكلية بيانات الطابور على ثلاثة أنواع رئيسية من العمليات، وهي:

  1. الإضافة (Enqueue): وهي عملية إضافة عنصر جديد إلى نهاية الطابور.
  2. الحذف (Dequeue): وهي عملية حذف العنصر الذي يقع في بداية الطابور.
  3. الاطلاع (Peek): وهي عملية الاطلاع على العنصر الذي يقع في بداية الطابور دون حذفه.

يمكن استخدام هيكل بيانات الطابور في العديد من التطبيقات، مثل متحكمات الصفوف في الصفوف الطويلة، وفي تحميل العمليات في مواقع الويب وتطبيقات الهاتف الجوال، وكذلك في مجالات الذكاء الاصطناعي والتعلم الآلي، وفي نظم التوزيع الجغرافي، والعديد من التطبيقات الأخرى التي تتطلب إدارة العناصر بطريقة FIFO.

هيكل بيانات Tree

  tree
      ----
       j    <-- root
     /   \
    f      k  
  /   \      \
 a     h      z    <-- leaves

على عكس المصفوفات ، والقوائم المرتبطة من النوع الخطى ، فإن الأشجار هي هياكل بيانات هرمية. النوع فى الرسمة هو من النوع Binary Tree.

يسمى العنصر الاساسى فى الشجرة Root ويسمى العناصر اسفله Child وكل نقطة تسمى Node واقصى عناصر لاسفل تسمى Leaves.

لعلك الان تتسأل ما فائدة نوع بيانات هكذا ؟!

 قد يكون أحد أسباب استخدام الأشجار هو أنك تريد تخزين بيانات وهى بطبيعتها تشكل تسلسل هرمى، على سبيل المثال نظام الملفات على جهاز كمبيوتر كالتالى

file system
-----------
     /    <-- root
  /      \
...       home
      /          \
   ugrad        course
    /       /      |     \
  ...      cs101  cs112  cs113

تطبيق هياكل البيانات المختلفة بلغة بايثون على موقع Github

دورة كاملة عن هياكل البيانات

اشترك فى القائمة البريدية

عن الكاتب

شارك على وسائل التواصل

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

أربعة عشر + سبعة =