📑 सामग्री सूची
१. परिचय
💡 सरल भाषामा: डाटा संरचना भनेको डाटालाई संगठित रूपमा राख्ने र प्रबन्धन गर्ने तरिका हो। यसले डाटा कसरी स्टोर गर्ने, organize गर्ने र access गर्ने भन्ने निर्धारण गर्छ।
डाटा संरचना कम्प्युटर विज्ञानको आधारभूत अवधारणा हो। यसले एल्गोरिथ्मको efficiency र performance लाई directly प्रभावित गर्छ। सही डाटा संरचना छनौट गर्दा Program को speed र memory usage मा ठूलो फरक पर्छ।
डाटा संरचनाको महत्व:
- ⚡ Performance Optimization – Efficient data access
- 💾 Memory Management – Optimal space utilization
- 🛠️ Problem Solving – Appropriate tool selection
- 🔧 Software Design – Better code organization
२. एरे (Array)
एरे (Array)
एउटै प्रकारका डाटा हरूको संग्रह
Memory: Contiguous memory locations
Access: Random access (O(1))
Size: Fixed size (static)
Search: O(n)
Insert: O(n)
Delete: O(n)
Space: O(n)
एरेको संरचना
10
20
30
40
50
३. लिंक्ड लिस्ट (Linked List)
लिंक्ड लिस्ट (Linked List)
Node हरूको chain, प्रत्येक node ले अर्को node लाई point गर्छ
Memory: Non-contiguous memory
Access: Sequential access (O(n))
Size: Dynamic size
Search: O(n)
Insert: O(1)
Delete: O(1)
Space: O(n)
लिंक्ड लिस्टको संरचना
४. स्ट्याक (Stack)
स्ट्याक (Stack)
LIFO (Last In First Out) संरचना
Push: Top मा element थप्ने
Pop: Top बाट element हटाउने
Peek: Top element हेर्ने
Pop: O(1)
Peek: O(1)
Space: O(n)
५. क्यू (Queue)
क्यू (Queue)
FIFO (First In First Out) संरचना
Enqueue: Rear मा element थप्ने
Dequeue: Front बाट element हटाउने
Front: Front element हेर्ने
Dequeue: O(1)
Front: O(1)
Space: O(n)
६. ट्री (Tree)
ट्री (Tree)
Hierarchical डाटा संरचना
Root: सबैभन्दा माथिको node
Parent/Child: Node हरूको सम्बन्ध
Leaf: कुनै child नभएको node
Insert: O(log n)
Delete: O(log n)
Space: O(n)
७. ग्राफ (Graph)
ग्राफ (Graph)
Vertices र Edges को संग्रह
Vertex: Node वा point
Edge: Vertices बीचको connection
Directed/Undirected: Edge को दिशा
Space: O(V+E)
८. तुलनात्मक विश्लेषण
| डाटा संरचना | Access Time | Insert Time | Delete Time | उपयुक्त प्रयोग |
|---|---|---|---|---|
| एरे | O(1) | O(n) | O(n) | Random access, Fixed size data |
| लिंक्ड लिस्ट | O(n) | O(1) | O(1) | Dynamic data, Frequent insert/delete |
| स्ट्याक | O(1) | O(1) | O(1) | Function calls, Undo operations |
| क्यू | O(1) | O(1) | O(1) | Task scheduling, Breadth-first search |
| ट्री | O(log n) | O(log n) | O(log n) | Hierarchical data, Searching |
| ग्राफ | O(V+E) | O(1) | O(1) | Networks, Social media |
९. प्रयोगका क्षेत्रहरू
📱 Mobile Applications
- Array – Contact list management
- Stack – Navigation history
- Queue – Message processing
🌐 Web Development
- Tree – DOM structure
- Graph – Social networks
- Stack – Browser history
🎮 Gaming
- Queue – Event handling
- Graph – Game maps
- Tree – Decision making
💼 Business Applications
- Linked List – Transaction history
- Tree – Organizational structure
- Array – Inventory management
१०. बारम्बार सोधिने प्रश्नहरू
| आधार | Array | Linked List |
|---|---|---|
| Memory Allocation | Contiguous | Non-contiguous |
| Size | Fixed | Dynamic |
| Access Time | O(1) | O(n) |
| Insert/Delete | O(n) | O(1) |
दुवै आफ्नो आफ्नो प्रयोगमा राम्रो छन्:
- ✅ Stack: LIFO चाहिने कामहरूमा (undo, function calls)
- ✅ Queue: FIFO चाहिने कामहरूमा (task scheduling, printing)
- 💡 प्रयोगको आधारमा छनौट गर्नुहोस्
सबैभन्दा सामान्य प्रयोग:
- 📊 Array: Student marks, Employee data
- 🔗 Linked List: Bank transaction history
- 📚 Stack: Browser history, App navigation
- 🎯 Queue: Ticket booking systems
- 🌳 Tree: Company organizational structure
💻 साधारण Array Implementation (Python मा)
numbers = [10, 20, 30, 40, 50]# Access element
print(numbers[2]) # Output: 30
# Insert element
numbers.insert(2, 25)
print(numbers) # Output: [10, 20, 25, 30, 40, 50]
# Delete element
numbers.pop(2)
print(numbers) # Output: [10, 20, 30, 40, 50]
🎯 अन्तिम सल्लाह
डाटा संरचना छनौट गर्दा यी कुराहरू ध्यान दिनुहोस्:
- ✅ प्रयोग केस अनुसार छनौट गर्नुहोस्
- ✅ Time Complexity र Space Complexity विचार गर्नुहोस्
- ✅ Operation Frequency (access, insert, delete) हेर्नुहोस्
- ✅ Data Size र Memory Constraints विचार गर्नुहोस्
