مفهوم – السؤال: ما معنى هياكل البيانات Data Structure؟
الجواب: هياكل البيانات Data Structure تعني بنية أو هيكل البيانات والتي تتيح ترتيب وتخزين البيانات في الكمبيوتر وتهيئتها لإستخدامها بشكل سليم وبكفاءة عند التعامل معها والتعديل عليها.
وتستند هياكل البيانات Data Structure على قدرة الكمبيوتر في تخزين البيانات في الذاكرة وتحديد نوع البيانات المناسب لكل تطبيق حتى يعمل ال Code أو ال Algorithm بطريقة فعالة سليمة.
فبطبيعة الحال يحدث في مجال تطوير البرمجيات أن البيانات يزداد حجمها وتزداد صعوبة تخزينها حتى أصبحت إدارة هذه البيانات والبحث فيها مسألةً تتطلب سرعةً فائقةً للحفاظ على كفاءة وأداء وعمل التطبيقات، وبناءً عليه صار من الضروري إيجاد طرقٍ مناسبةٍ وذات كفاءةٍ تحقق لنا القدرة على تخزين البيانات بشكلٍ يمكننا من إدارتها وإجراء العمليات عليها بسرعةٍ ودقةٍ عالية.
هياكل البيانات Data Structure
هياكل البيانات Data Structure وتراكيب البيانات وبنى المعطيات لھم المعنى نفسه، نحن نتحدث عن طرقٍ مختلفةٍ لتخزين البيانات وخوارزمياتٍ خاصةٍ بكل طريقةٍ تهدف إلى تسهيل إجراء العمليات على البيانات التي تم تخزينها.
فھي مفيدةٌ جدًّا في برمجة قواعد البيانات من خلال استغلال مواقع الذاكرة بشكلٍ جيدٍ ومنظم، وتكمن قوة المهندسين والمبرمجين في قدرتهم على اختيار هياكل البيانات المناسبة للمسألة التي هم بصدد حلها.
فوائد هياكل البيانات Data Structure
1- التحكم في توزيع البیانات والتعرف على طبیعتھا وبنائھا الأساسي بنسقٍ معينٍ في الذاكرة.
2- بناء برامج قويةٍ ومتماسكةٍ من ناحية البناء والمنطق.
3- تمكن المبرمج من إبداع طرقٍ مبتكرةٍ في كتابة البرامج المختلفة.
4- اختصار زمن التخزين واسترجاع البيانات من الذاكرة.
لماذا نحتاج هياكل البيانات Data Structure؟
نظرًا لأن التطبيقات تزداد تعقيدًا والبيانات تزداد بمعدلٍ هائل نتجت مشاكل كثيرة يتم مواجهتها في التطبيقات وتقوم الأبحاث بمحاولاتٍ لإيجاد حلولٍ برمجيةٍ ذات كفاءةٍ عالية مثل هياكل البيانات (Data Structure)، ومن هذه المشاكل التى تُستخدَم هياكل البيانات في حلها:-
1- البحث داخل البيانات (Data Search):
إذا أخذنا في الاعتبار أنك تبحث عن عنصرٍ واحد داخل مليون عنصر فماذا لو كنا نتحدث عن 50 مليون عنصر؟ فماذا لو كانوا مليار عنصر (فهرس جوجل فيه مليارات الروابط لصفحات الويب فكيف يتم استرجاع الروابط الأكثر أهميةً بالنسبة للطلبية المدخلة وخلال أجزاء من الثانية؟) وهكذا فكلما ازدادت البيانات تصبح عملية البحث بحاجةٍ إلى وقتٍ أطول وتصبح أبطأ وأكثر تعقيدًا.
2- سرعة المعالج (Processor Speed):
على الرغم من كونها عالية وفى ازديادٍ مع الوقت فإنها محدودةٌ إذا زادت البيانات بشكلٍ هائل!
3- تعدد المهام (Multi Tasks):
يمكن لآلاف المستخدمين البحثُ في البيانات على الإنترنت وغيره من الخدمات في وقتٍ واحدٍ وبالرغم من كفاءة الخوادم (Servers) ذات السرعات العالية فإنها تواجه صعوبةً في تخديم العملاء بالوقت نفسه على التوازي، وكل ذلك قد يكون بسبب اختيار بنى معطياتٍ غير مناسبة.
اقرأ ايضًا: شرح قواعد البيانات Database
أنواع هياكل البيانات Data Structure
1- هياكل بيانات ثابتة ساكنة (STATIC):
كالجداول والسجلات (records)، وعند التصریح بها يجب تعيين حدٍّ أعلى لحجم البیانات المدخلة فلا تقبل الإضافة فوق حجمھا المحدد.
2- هياكل بيانات دینامیكیة (DYNAMIC): أي متحركة متغیرة وتنقسم إلى نوعين:-
1- هياكل بيانات خطیة: وھي التي تنتظم فيها البيانات في خطٍّ متتالٍ، مثل: الملفات، والقوائم (lists)، والطوابير (queues)، والمكدسات (stacks)، والمجموعات (sets).
2- هياكل بيانات متشعبة، مثل: الأشجار (trees) والخرائط (graphs).
أشهر هياكل البيانات Data Structure
أولًا: المكدس (Stack):
في هذا النموذج يتم إدخال البيانات باتجاهٍ معين وإخراجها بالاتجاه المعاكس، يمكننا تشبيهه بأطباق الصحون في حوض الغسيل! الصحن الجديد يوضع في الأعلى ولا يمكن سحب صحن من منتصف المجموعة، لذلك يوصف هذا النموذج بمصطلح ((LIFO: Last In First Out أي أن العنصر الذي يدخل أخيرًا هو الذي يخرج أولًا.
ويستخدم المكدس في حل العديد من المسائل، مثل: إیجاد قیم التعابیر الحسابیة وترتيب عمليات الاعتراض والمقاطعة المستخدمة بالویندوز وغيرها.
ثانيا: الطوابیر (Queues):
إحدى أنواع هياكل البيانات الخطیة وتختلف عن المكدس من حيث المبدأ المتبع لإدخال المعلومات وإخراجھا وھو أن من يدخل أولًا يخرج أولًا (FIFO: First In First Out) مثل أي طابورٍ معروفٍ في المؤسسات الحكومية.
اقرأ ايضًا: نصائح ذهبية في تعلم البرمجة
ثالثًا: القوائم (List):
وھي نوعٌ من هياكل البيانات الخطیة تتألف من مجموعةٍ من الخلایا المترابطة فیما بینھا وكل عنصرٍ فیھا یسمى عقدة (node)، وكل عقدةٍ تحوي معلومتين: قيمة داخل العقدة وعنوان العقدة التي بعدھا.
أنواع القوائم:-
1- القوائم الأحادیة.
2- القوائم الثنائیة (مؤشرٌ للأمام ومؤشرٌ للخلف).
3- القوائم الدائریة (مؤشرٌ من آخر عنصرٍ على أول عنصر).
هياكل البيانات Data Structures من أهم المفاهيم البرمجية في علوم الحاسوب وتبنى عليها تطبيقاتٌ وأنظمةٌ حرجة، كما أنها دقيقةٌ وسريعةٌ وعالية الأداء، يجب على كل عاملٍ في مجال هندسة المعلومات أن يكون محيطًا بها وبتفاصيلها النظرية والتطبيقية.
رابعًا: الأشجار (Trees):
الشجرة هي أحد أنواع هياكل البيانات المتشعبة، تستخدم لتمثیل المعلومات التي لھا علاقاتٌ تشعبیةٌ بأن يكون كل عنصرٍ (معلومة) في الشجرة -نظريًّا- له أب وعدة أبناء، وقد يكون بلا أب (جذر) أو بلا أبناء (ورقة).
عناصر الأشجار تسمى عقد (Nodes) وكل عقدة لھا مسار (Path) یوصلھا بالجذر (Root)، طول المسار (Path Length) ھو عدد الوصلات من الجذر إلى الخلیة المراد معرفة طول مسارھا.
اقرأ ايضًا: نصائح مفيدة في تعلم البرمجة
عمق العقدة (Depth): ھو طول مسارھا إلى الجذر، مثلًا الخلیة (E) عمقها (2)، الجذر (A) عمقه (0).
المستوى (Level): ھو كل الخلایا التي لھا العمق نفسه.
ارتفاع الشجرة (Height): ھو أكبر عمق موجود للشجرة.