logo

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

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

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

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

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

شكل 1: تمثيل عناصر البيانات

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

ما هو هيكل البيانات؟

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

يعتمد نطاق نموذج بيانات معين على عاملين:

  1. أولاً، يجب تحميلها بدرجة كافية في البنية لتعكس الارتباط المحدد للبيانات مع كائن في العالم الحقيقي.
  2. ثانيًا، يجب أن يكون التشكيل واضحًا جدًا بحيث يمكن للمرء التكيف لمعالجة البيانات بكفاءة عند الضرورة.

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

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

تهيئة قائمة بايثون

المصطلحات الأساسية المتعلقة بهياكل البيانات

هياكل البيانات هي اللبنات الأساسية لأي برنامج أو برنامج. يعد اختيار بنية البيانات المناسبة لبرنامج ما مهمة صعبة للغاية بالنسبة للمبرمج.

فيما يلي بعض المصطلحات الأساسية المستخدمة عندما يتعلق الأمر بهياكل البيانات:

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

الكيانات ذات السمات المماثلة تشكل مجموعة الكيان . تحتوي كل سمة في مجموعة كيانات على نطاق من القيم، وهي مجموعة كل القيم الممكنة التي يمكن تخصيصها للسمة المحددة.

يستخدم مصطلح 'المعلومات' أحيانًا للبيانات ذات السمات المحددة للبيانات ذات المعنى أو المعالجة.

    مجال:تُعرف وحدة المعلومات الأولية الواحدة التي ترمز إلى سمة الكيان باسم الحقل.سِجِلّ:تُعرف مجموعة عناصر البيانات المختلفة بالسجل. على سبيل المثال، إذا تحدثنا عن كيان الموظف، فيمكن تجميع اسمه ومعرفه وعنوانه والمسمى الوظيفي لتكوين السجل الخاص بالموظف.ملف:تُعرف مجموعة السجلات المختلفة من نوع كيان واحد بالملف. على سبيل المثال، إذا كان هناك 100 موظف، فسيكون هناك 25 سجلاً في الملف ذي الصلة الذي يحتوي على بيانات حول كل موظف.

فهم الحاجة إلى هياكل البيانات

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

لماذا يجب أن نتعلم هياكل البيانات؟

  1. تعد هياكل البيانات والخوارزميات جانبين من الجوانب الرئيسية لعلوم الكمبيوتر.
  2. تسمح لنا هياكل البيانات بتنظيم البيانات وتخزينها، بينما تسمح لنا الخوارزميات بمعالجة تلك البيانات بشكل مفيد.
  3. سيساعدنا تعلم هياكل البيانات والخوارزميات على أن نصبح مبرمجين أفضل.
  4. سنكون قادرين على كتابة تعليمات برمجية أكثر فعالية وموثوقية.
  5. سنكون أيضًا قادرين على حل المشكلات بسرعة وكفاءة أكبر.

فهم أهداف هياكل البيانات

تلبي هياكل البيانات هدفين متكاملين:

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

فهم بعض الميزات الرئيسية لهياكل البيانات

بعض الميزات المهمة لهياكل البيانات هي:

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

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

توفر بنية البيانات مجموعة منظمة من المتغيرات المرتبطة ببعضها البعض بطرق مختلفة. إنه يشكل أساس أداة البرمجة التي تشير إلى العلاقة بين عناصر البيانات وتسمح للمبرمجين بمعالجة البيانات بكفاءة.

يمكننا تصنيف هياكل البيانات إلى فئتين:

  1. بنية البيانات البدائية
  2. بنية البيانات غير البدائية

يوضح الشكل التالي التصنيفات المختلفة لهياكل البيانات.

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

الشكل 2: تصنيفات هياكل البيانات

هياكل البيانات البدائية

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

هياكل البيانات غير البدائية

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

هياكل البيانات الخطية

تُعرف بنية البيانات التي تحافظ على اتصال خطي بين عناصر البيانات الخاصة بها باسم بنية البيانات الخطية. ويتم ترتيب البيانات خطياً، حيث يتكون كل عنصر من العناصر اللاحقة والأسلاف باستثناء عنصر البيانات الأول والأخير. ومع ذلك، ليس بالضرورة أن يكون ذلك صحيحًا في حالة الذاكرة، حيث أن الترتيب قد لا يكون متسلسلًا.

بناءً على تخصيص الذاكرة، يتم تصنيف هياكل البيانات الخطية إلى نوعين:

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

أنواع هياكل البيانات الخطية

فيما يلي قائمة هياكل البيانات الخطية التي نستخدمها بشكل عام:

1. المصفوفات

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

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

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

الشكل 3. مجموعة

يمكن تصنيف المصفوفات إلى أنواع مختلفة:

تستمر عملية Android الأساسية في التوقف
    مصفوفة أحادية البعد:تُعرف المصفوفة التي تحتوي على صف واحد فقط من عناصر البيانات بالمصفوفة أحادية البعد. يتم تخزينه في موقع تخزين تصاعدي.مصفوفة ثنائية الأبعاد:تسمى المصفوفة التي تتكون من صفوف وأعمدة متعددة من عناصر البيانات بالمصفوفة ثنائية الأبعاد. ومن المعروف أيضا باسم المصفوفة.مصفوفة متعددة الأبعاد:يمكننا تعريف المصفوفة متعددة الأبعاد بأنها مصفوفة من المصفوفات. لا تقتصر المصفوفات متعددة الأبعاد على مؤشرين أو بعدين لأنها يمكن أن تشمل أكبر عدد ممكن من المؤشرات حسب الحاجة.

بعض تطبيقات المصفوفة:

  1. يمكننا تخزين قائمة بعناصر البيانات التي تنتمي إلى نفس نوع البيانات.
  2. يعمل المصفوفة كمخزن مساعد لهياكل البيانات الأخرى.
  3. يساعد المصفوفة أيضًا في تخزين عناصر البيانات لشجرة ثنائية ذات عدد ثابت.
  4. تعمل المصفوفة أيضًا كمخزن للمصفوفات.

2. القوائم المرتبطة

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

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

الشكل 4. قائمة مرتبطة

يمكن تصنيف القوائم المرتبطة إلى أنواع مختلفة:

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

بعض تطبيقات القوائم المرتبطة:

  1. تساعدنا القوائم المرتبطة في تنفيذ الأكوام وقوائم الانتظار والأشجار الثنائية والرسوم البيانية ذات الحجم المحدد مسبقًا.
  2. يمكننا أيضًا تنفيذ وظيفة نظام التشغيل لإدارة الذاكرة الديناميكية.
  3. تسمح القوائم المرتبطة أيضًا بتنفيذ كثيرات الحدود للعمليات الرياضية.
  4. يمكننا استخدام القائمة المرتبطة الدائرية لتنفيذ أنظمة التشغيل أو وظائف التطبيق التي تدور حول تنفيذ المهام.
  5. تعد القائمة المرتبطة الدائرية مفيدة أيضًا في عرض الشرائح حيث يطلب المستخدم العودة إلى الشريحة الأولى بعد عرض الشريحة الأخيرة.
  6. يتم استخدام القائمة المرتبطة بشكل مضاعف لتنفيذ الأزرار الأمامية والخلفية في المتصفح للتحرك للأمام والخلف في الصفحات المفتوحة لموقع الويب.

3. الأكوام

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

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

الشكل 5. مثال واقعي على Stack

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

العمليات الأساسية في المكدس هي كما يلي:

    يدفع:تسمى عملية إدراج عنصر جديد في المكدس بعملية الدفع.البوب:تسمى عملية إزالة العناصر أو حذفها من المكدس باسم عملية Pop Operation.
مقدمة لهياكل البيانات

الشكل 6. كومة

بعض تطبيقات المكدسات:

أنواع الصلات في rdbms
  1. يتم استخدام المكدس كبنية تخزين مؤقتة للعمليات العودية.
  2. يتم استخدام المكدس أيضًا كبنية تخزين مساعدة لاستدعاءات الوظائف والعمليات المتداخلة والوظائف المؤجلة/المؤجلة.
  3. يمكننا إدارة استدعاءات الوظائف باستخدام الأكوام.
  4. تُستخدم الأكوام أيضًا لتقييم التعبيرات الحسابية في لغات البرمجة المختلفة.
  5. تساعد الأكوام أيضًا في تحويل تعبيرات infix إلى تعبيرات postfix.
  6. تسمح لنا الأكوام بالتحقق من بناء جملة التعبير في بيئة البرمجة.
  7. يمكننا مطابقة الأقواس باستخدام الأكوام.
  8. يمكن استخدام الأكوام لعكس سلسلة.
  9. تساعد الأكوام في حل المشكلات بناءً على التراجع.
  10. يمكننا استخدام الأكوام في البحث المتعمق أولاً في الرسم البياني واجتياز الشجرة.
  11. تُستخدم الأكوام أيضًا في وظائف نظام التشغيل.
  12. تُستخدم الأكوام أيضًا في وظائف UNDO وREDO في التحرير.

4. ذيول

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

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

الشكل 7. مثال واقعي لقائمة الانتظار

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

فيما يلي العمليات الأساسية لقائمة الانتظار:

    وضع في قائمة الانتظار:يُطلق على إدراج أو إضافة بعض عناصر البيانات إلى قائمة الانتظار اسم Enqueue. يتم دائمًا إدخال العنصر بمساعدة المؤشر الخلفي.قائمة الانتظار:يُطلق على حذف أو إزالة عناصر البيانات من قائمة الانتظار اسم Dequeue. يتم حذف العنصر دائمًا بمساعدة المؤشر الأمامي.
مقدمة لهياكل البيانات

الشكل 8. طابور

بعض تطبيقات قوائم الانتظار:

  1. تُستخدم قوائم الانتظار بشكل عام في عملية البحث الموسع في الرسوم البيانية.
  2. تُستخدم قوائم الانتظار أيضًا في عمليات جدولة المهام لأنظمة التشغيل، مثل قائمة انتظار المخزن المؤقت للوحة المفاتيح لتخزين المفاتيح التي يضغط عليها المستخدمون وقائمة انتظار المخزن المؤقت للطباعة لتخزين المستندات المطبوعة بواسطة الطابعة.
  3. قوائم الانتظار مسؤولة عن جدولة وحدة المعالجة المركزية وجدولة المهام وجدولة القرص.
  4. يتم استخدام قوائم الانتظار ذات الأولوية في عمليات تنزيل الملفات في المتصفح.
  5. تُستخدم قوائم الانتظار أيضًا لنقل البيانات بين الأجهزة الطرفية ووحدة المعالجة المركزية.
  6. تكون قوائم الانتظار مسؤولة أيضًا عن معالجة المقاطعات التي تولدها تطبيقات المستخدم لوحدة المعالجة المركزية.

هياكل البيانات غير الخطية

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

أنواع هياكل البيانات غير الخطية

فيما يلي قائمة بهياكل البيانات غير الخطية التي نستخدمها بشكل عام:

1. الأشجار

الشجرة عبارة عن بنية بيانات غير خطية وتسلسل هرمي يحتوي على مجموعة من العقد بحيث تخزن كل عقدة من الشجرة قيمة وقائمة مراجع للعقد الأخرى ('الأبناء').

ما هو الانترنت

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

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

الشكل 9. شجرة

يمكن تصنيف الأشجار إلى أنواع مختلفة:

    شجرة ثنائية:يُطلق على بنية بيانات الشجرة حيث يمكن أن تحتوي كل عقدة أصل على طفلين على الأكثر اسم الشجرة الثنائية.شجرة البحث الثنائية:شجرة البحث الثنائية هي بنية بيانات شجرة حيث يمكننا بسهولة الاحتفاظ بقائمة مرتبة من الأرقام.شجرة AVL:شجرة AVL هي شجرة بحث ثنائية ذاتية التوازن حيث تحتفظ كل عقدة بمعلومات إضافية تعرف باسم عامل التوازن الذي تكون قيمته إما -1 أو 0 أو +1.ب-شجرة:تعد B-Tree نوعًا خاصًا من شجرة البحث الثنائية ذاتية التوازن حيث تتكون كل عقدة من مفاتيح متعددة ويمكن أن تحتوي على أكثر من طفلين.

بعض تطبيقات الأشجار:

  1. تنفذ الأشجار هياكل هرمية في أنظمة الكمبيوتر مثل الدلائل وأنظمة الملفات.
  2. تُستخدم الأشجار أيضًا لتنفيذ بنية التنقل لموقع الويب.
  3. يمكننا إنشاء كود مثل كود هوفمان باستخدام الأشجار.
  4. تساعد الأشجار أيضًا في اتخاذ القرار في تطبيقات الألعاب.
  5. الأشجار مسؤولة عن تنفيذ قوائم الانتظار ذات الأولوية لوظائف جدولة نظام التشغيل القائمة على الأولوية.
  6. الأشجار مسؤولة أيضًا عن تحليل التعبيرات والبيانات في مترجمي لغات البرمجة المختلفة.
  7. يمكننا استخدام الأشجار لتخزين مفاتيح البيانات لفهرسة نظام إدارة قواعد البيانات (DBMS).
  8. تسمح لنا الأشجار الممتدة بتوجيه القرارات في شبكات الكمبيوتر والاتصالات.
  9. تُستخدم الأشجار أيضًا في خوارزمية تحديد المسار المطبقة في الذكاء الاصطناعي (AI)، والروبوتات، وتطبيقات ألعاب الفيديو.

2. الرسوم البيانية

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

تعتبر بنية بيانات الرسم البياني G بنية رياضية تتكون من مجموعة من القمم V ومجموعة من الحواف E كما هو موضح أدناه:

ز = (الخامس، ه)

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

الشكل 10. رسم بياني

يمثل الشكل أعلاه رسمًا بيانيًا له سبعة رؤوس A، B، C، D، E، F، G، وعشرة حواف [A، B]، [A، C]، [B، C]، [B، D]، [ب، ه]، [ج، د]، [د، ه]، [د، و]، [ه، و]، و [ه، ز].

اعتمادًا على موضع القمم والحواف، يمكن تصنيف الرسوم البيانية إلى أنواع مختلفة:

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

بعض تطبيقات الرسوم البيانية:

  1. تساعدنا الرسوم البيانية في تمثيل الطرق والشبكات في تطبيقات النقل والسفر والاتصالات.
  2. تُستخدم الرسوم البيانية لعرض المسارات في نظام تحديد المواقع العالمي (GPS).
  3. تساعدنا الرسوم البيانية أيضًا في تمثيل الترابط في الشبكات الاجتماعية والتطبيقات الأخرى المستندة إلى الشبكة.
  4. يتم استخدام الرسوم البيانية في تطبيقات رسم الخرائط.
  5. الرسوم البيانية هي المسؤولة عن تمثيل تفضيلات المستخدم في تطبيقات التجارة الإلكترونية.
  6. تُستخدم الرسوم البيانية أيضًا في شبكات المرافق من أجل تحديد المشكلات التي تواجه الشركات المحلية أو البلدية.
  7. تساعد الرسوم البيانية أيضًا في إدارة استخدام الموارد وتوافرها في المؤسسة.
  8. تُستخدم الرسوم البيانية أيضًا لإنشاء خرائط ارتباط المستندات لمواقع الويب لعرض الاتصال بين الصفحات من خلال الارتباطات التشعبية.
  9. تُستخدم الرسوم البيانية أيضًا في الحركات الآلية والشبكات العصبية.

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

في القسم التالي، سنناقش الأنواع المختلفة للعمليات التي يمكننا تنفيذها لمعالجة البيانات في كل بنية بيانات:

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

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

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

من التعريف المذكور أعلاه يمكننا أن نستنتج أن العمليات في بنية البيانات تشمل:

  1. مستوى عالٍ من التجريد مثل إضافة أو حذف عنصر من القائمة.
  2. البحث عن عنصر في القائمة وفرزه.
  3. الوصول إلى العنصر ذو الأولوية الأعلى في القائمة.

عندما تقوم بنية البيانات بمثل هذه العمليات، فإنها تُعرف باسم نوع البيانات المجردة (ADT) .

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

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

فهم مزايا استخدام ADTs

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

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

فيما يلي بعض تطبيقات هياكل البيانات:

  1. تساعد هياكل البيانات في تنظيم البيانات في ذاكرة الكمبيوتر.
  2. تساعد هياكل البيانات أيضًا في تمثيل المعلومات في قواعد البيانات.
  3. تسمح هياكل البيانات بتنفيذ خوارزميات للبحث في البيانات (على سبيل المثال، محرك البحث).
  4. يمكننا استخدام هياكل البيانات لتنفيذ الخوارزميات لمعالجة البيانات (على سبيل المثال، معالجات النصوص).
  5. يمكننا أيضًا تنفيذ الخوارزميات لتحليل البيانات باستخدام هياكل البيانات (على سبيل المثال، عمال مناجم البيانات).
  6. تدعم هياكل البيانات الخوارزميات لإنشاء البيانات (على سبيل المثال، مولد أرقام عشوائية).
  7. تدعم هياكل البيانات أيضًا الخوارزميات لضغط البيانات وفك ضغطها (على سبيل المثال، أداة مساعدة مضغوطة).
  8. يمكننا أيضًا استخدام هياكل البيانات لتنفيذ الخوارزميات لتشفير البيانات وفك تشفيرها (على سبيل المثال، نظام الأمان).
  9. بمساعدة هياكل البيانات، يمكننا إنشاء برنامج يمكنه إدارة الملفات والأدلة (على سبيل المثال، مدير الملفات).
  10. يمكننا أيضًا تطوير برنامج يمكنه عرض الرسومات باستخدام هياكل البيانات. (على سبيل المثال، متصفح ويب أو برنامج عرض ثلاثي الأبعاد).

وبصرف النظر عن تلك، كما ذكرنا سابقًا، هناك العديد من التطبيقات الأخرى لهياكل البيانات التي يمكن أن تساعدنا في بناء أي برنامج مرغوب فيه.