Skip to content

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

مقدمة

البرنامج = هيكل بيانات + خوارزمية. تعلمنا كيف ينفذ المعالج التعليمات وكيف يدير نظام التشغيل الموارد. لكن الكائن الأساسي الذي تعالجه البرامج هو البيانات -- معلومات المستخدمين، قوائم المنتجات، العلاقات الاجتماعية... كيف تُنظم هذه البيانات في الذاكرة يحدد مباشرة سرعة البرنامج. الإجابة عادةً في اختيار هيكل البيانات.

ماذا ستتعلم في هذه المقالة؟

  • حدس: رؤية متطلب والتفكير تلقائياً في هيكل البيانات المناسب
  • منظور الأداء: تشخيص ما إذا كان عنق الزجاجة في الهيكل أم الخوارزمية
  • تفكير المقايضة: فهم "مساحة مقابل وقت" و"وقت مقابل مساحة"
  • قراءة الكود: HashMap، Stack، Queue لن تكون مصطلحات غريبة بعد الآن
الفصلالمحتوىالمفهوم الأساسي
الفصل 1نظرة عامةأربع فئات هياكل البيانات
الفصل 2الهياكل الخطيةالمصفوفات، القوائم المرتبطة، المكدسات، الطوابير
الفصل 3جداول التجزئةدالة التجزئة، معالجة التصادم، بحث O(1)
الفصل 4هياكل الأشجارالأشجار الثنائية، نظام الملفات، DOM
الفصل 5هياكل الرسوم البيانيةرسوم موجهة، غير موجهة، خوارزميات الاجتياز
الفصل 6مقارنة الأداءالتعقيد الزمني والمكاني
الفصل 7دليل الاختيارتحليل السيناريوهات

1. نظرة عامة: ما هي هياكل البيانات؟

تخيل أنك تنظم مجموعة كتب:

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

هياكل البيانات هي "طريقة تنظيم" البيانات -- تحدد كيف تُخزن وتُبحث وتُعدل.

Data Structure OverviewChoose a data organization model for each scenario
Data structures are like ways to organize a room: clothes in a wardrobe, books on shelves, and small items in drawers.
📚
Linear structures
Data arranged in order, like a row of books
ArrayLinked listStackQueue
🗂️
Hash structures
Fast lookup through a key
Hash tableDictionarySet
🌳
Tree structures
Hierarchy, like a family tree
Binary treeB-treeHeap
🕸️
Graph structures
Complex relationship networks
Directed graphUndirected graphNetwork graph
📚Linear structures
Features
One-to-one relationship between elements
A clear before-and-after order
Can use contiguous storage or linked storage
Use Cases
📝
Arrays: list data
Store ordered data such as student scores or product prices
🔄
Stacks: undo operations
Text editor undo history, last in first out
🎫
Queues: task scheduling
Print queues and task queues, first in first out
Operation Complexity
OperationAverage time
Access elementO(1)
Insert/deleteO(n)
Everyday Analogy
Like train cars connected in order
To find car 5, count directly to it; to insert a new car, you need to break and reconnect links.

جميع الهياكل تُصنف في أربع فئات:

النوعالعلاقةأمثلةتشبيه
خطيواحد لواحدمصفوفة، قائمة، مكدس، طابورعربات القطار
تجزئةمفتاف←قيمةجدول تجزئة، قاموسبطاقات فهرس المكتبة
شجرةواحد لكثيرشجرة ثنائية، B-treeشجرة العائلة
رسم بيانيكثير لكثيررسم موجه، غير موجهخريطة المترو

2. الهياكل الخطية: التنظيم الأساسي

Four Forms of Linear StructuresHow arrays, linked lists, stacks, and queues differ
ArrayContiguous memory, indexed access
0
10
1
25
2
33
3
47
4
59
5
62
✓ Contiguous memory | ✓ Fast access (O(1)) | ✗ Slow insert/delete (O(n))
Operation Comparison
Data structureAccessInsertDeleteFeature
📊 ArrayO(1) fastO(n) slowO(n) slowFixed size
🔗 Linked listO(n) slowO(1) fastO(1) fastVariable size
🥞 StackO(n)O(1) fastO(1) fastOne-end operations
🚶 QueueO(n)O(1) fastO(1) fastTwo-end operations
Real-World Uses
📋
List data
Student scores or product price lists
🖼️
Image processing
Pixel matrix storage
📈
Charts
Data ordered by time

2.1 مصفوفة مقابل قائمة مرتبطة

البُعدمصفوفةقائمة مرتبطة
الذاكرةكتلة متصلةمتفرقة، مربوطة بمؤشرات
الوصول للعنصر nمباشر، O(1)من البداية، O(n)
الإدراج في المنتصفنقل الخلفي، O(n)تغيير مؤشرات، O(1)
الحجمثابت عند الإنشاءينمو ديناميكياً

2.2 المكدس والطابور

الهيكلالقاعدةتشبيهأين يظهر؟
مكدسLIFO (آخر يدخل، أول يخرج)كومة صحونمكدس الاستدعاءات، رجوع المتصفح
طابورFIFO (أول يدخل، أول يخرج)طابور شراءطابور المهام، طابور الرسائل

3. جدول التجزئة: البحث الأسرع

Hash Tables: Super-Fast LookupFind data directly through a key
📚
A hash table is like a library index card: instead of searching shelf by shelf, you use the index to find the book location directly.
Store data
Hashing process
Input key
apple
Hash function
hash(key) % 10
Array index
0
Hash table
0
apple: apple
1
Empty
2
Empty
3
Empty
4
Empty
5
Empty
6
orange: orange
7
Empty
8
Empty
9
banana: banana
Performance Comparison
Hash table lookup
O(1)
Found instantly
Array lookup
O(n)
Requires traversal
Binary search
O(log n)
Requires sorted data
Common Uses
👤
User table (user ID → profile)
🛒
Shopping cart (product ID → quantity)
📝
Cache system (URL → page content)
🔍
Dictionary (word → definition)

3.1 المبدأ

  1. تعطي مفتاحاً (مثال: "apple")
  2. دالة التجزئة تحسب رقماً (مثال: hash("apple") = 3)
  3. تذهب مباشرة للموضع 3 -- بدون اجتياز

3.2 تصادمات التجزئة

مفتاحان قد يعطيان نفس الفهرس -- هذا تصادم تجزئة.

الحلالمبدأ
التسلسلقائمة مرتبطة في نفس الموضع
العنونة المفتوحةالبحث عن الموضع الفارغ التالي

4. هياكل الأشجار: التعبير عن التسلسل الهرمي

Tree Structures: Representing HierarchiesAn organization model like a family tree
Choose a tree type:
50307020406080
Tree Structure Features
🌲
Hierarchy
Nodes have one-to-many parent-child relationships
🎯
Single root node
Except for the root, each node has exactly one parent
🔍
Efficient lookup
Binary search tree lookup is O(log n)
🔄
Multiple traversals
Preorder, inorder, postorder, and level-order traversal
Use Cases
📁
File systems
Hierarchical organization of folders and files
🌐
HTML DOM
Nested structure of web page elements
🏢
Organization charts
Company management hierarchy
🌲
Decision trees
Classification algorithms in machine learning

4.1 شجرة البحث الثنائية

قاعدة: الأصغر يسار، الأكبر يمين. بحث O(log n).

4.2 الأشجار المتوازنة

النوعالاستراتيجيةالتطبيق
AVLتوازن صارمبحث متكرر
أحمر-أسودتوازن تقريبيJava TreeMap، نواة Linux
B-treeتوازن متعدد المساراتفهارس قواعد البيانات

5. هياكل الرسوم البيانية: شبكات العلاقات المعقدة

Graph Structures: Representing Complex RelationshipsA network of nodes and edges
ABCDE
Graph properties
Vertices (V)
5
Edges (E)
6
Degree
2.4
Use Cases
🗺️Map navigation (shortest path)
👥Social networks (friend relationships)
🌐Web links (PageRank)
🔗Dependencies (package management)
النوعالخاصيةتشبيه
غير موجهA→B مثل B→Aأصدقاء وي تشات
موجهA→B ليس B→Aمتابعون ويبو
مرجحالحواف لها أوزانطرق بين المدن

6. مقارنة الأداء

Data Structures: Containers for DataChoose different storage models for different scenarios
ArrayContiguous memory and fast indexed access
010
120
230
340
450
560
670
780
Access arr[2] = O(1), insert/delete = O(n)
Time Complexity Comparison
OperationArrayLinked listHash tableTree
AccessO(1)O(n)O(1)O(log n)
SearchO(n)O(n)O(1)O(log n)
InsertO(n)O(1)O(1)O(log n)
DeleteO(n)O(1)O(1)O(log n)
Core idea:Data structures are containers for data. Different containers have different tradeoffs. Choosing the right data structure can improve program efficiency by orders of magnitude.
الهيكلالوصولالبحثالإدراجالحذف
مصفوفةO(1)O(n)O(n)O(n)
قائمةO(n)O(n)O(1)O(1)
مكدس/طابورO(n)O(n)O(1)O(1)
جدول تجزئة--O(1)O(1)O(1)
شجرة BST--O(log n)O(log n)O(log n)

7. دليل الاختيار

الحاجةالهيكلالسبب
وصول بالموقعمصفوفةO(1) وصول عشوائي
إدراج/حذف متكررقائمة مرتبطةO(1) بدون نقل عناصر
LIFO (تراجع، تكرار)مكدسدلالات LIFO طبيعية
FIFO (طابور مهام)طابوردلالات FIFO طبيعية
بحث سريع بالمفتاحجدول تجزئةO(1) بحث متوسط
بيانات مرتبة + بحث سريعBSTO(log n) ومرتب
علاقات كثير لكثيررسم بيانييعبر عن اتصالات تعسفية

القاعدة العملية

  • 80% من السيناريوهات: المصفوفات وجداول التجزئة كافية
  • تحتاج ترتيب: فكر في الأشجار
  • علاقات معقدة: فكر في الرسوم البيانية
  • غير متأكد؟ استخدم الأسهل أولاً

قراءة إضافية

الموضوعالمصدر
التصورVisuAlgo
كتاب تمهيدي"Grokking Algorithms"
تعمق"Data Structures and Algorithm Analysis"
ممارسةLeetCode

الخطوات التالية