C++ में एल्गोरिदम और डेटा संरचनाएँ: शुरुआती लोगों के लिए पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C++ में एल्गोरिदम और डेटा संरचनाएँ: बुनियादी से अभ्यास तक



एल्गोरिदम और डेटा संरचनाओं में महारत हासिल करना किसी भी प्रोग्रामर के विकास में एक महत्वपूर्ण चरण है। इस लेख में हम C++ भाषा के उदाहरण के साथ मौलिक अवधारणाओं का विश्लेषण करेंगे। आप सीखेंगे कि डेटा को कुशलतापूर्वक कैसे व्यवस्थित करें और तेज़ एल्गोरिदम कैसे लिखें, जो आपके प्रोजेक्ट्स की नींव बनेंगे। यह सामग्री शुरुआती और इंटरमीडिएट डेवलपर्स के लिए है।



एल्गोरिदम और डेटा संरचनाएँ क्या हैं?



एल्गोरिदम किसी समस्या को हल करने के लिए क्रियाओं का एक स्पष्ट क्रम है। डेटा संरचना डेटा को व्यवस्थित और संग्रहीत करने का एक तरीका है, जो कुशल पहुँच और संशोधन सुनिश्चित करता है। C++ में, दोनों अवधारणाएँ निकटता से जुड़ी हुई हैं: सही डेटा संरचना का चयन एल्गोरिदम को दस गुना तक तेज कर सकता है।



C++ में मुख्य डेटा संरचनाएँ:

  • ऐरे — एक ही प्रकार के तत्वों का निश्चित सेट
  • लिंक्ड लिस्ट — गतिशील अनुक्रम
  • स्टैक और क्यू — सीमित पहुँच वाली संरचनाएँ
  • ट्री — पदानुक्रमिक संरचनाएँ
  • हैश टेबल — कुंजी द्वारा त्वरित खोज


ऐरे और उनके साथ काम करना



ऐरे सबसे सरल डेटा संरचना है, जहाँ तत्व मेमोरी के सन्निकट क्षेत्र में संग्रहीत होते हैं। C++ में, ऐरे स्थिर और गतिशील दोनों हो सकते हैं।



#include <iostream>using namespace std;

int main() { // स्थिर ऐरे int arr[5] = {10, 20, 30, 40, 50}; // गतिशील ऐरे (new के माध्यम से) int* dynArr = new int[3]; dynArr[0] = 1; dynArr[1] = 2; dynArr[2] = 3; // तत्वों का प्रदर्शन for (int i = 0; i < 5; i++) { cout << arr[i] << " "; } delete[] dynArr; // मेमोरी मुक्त करना return 0;}


ऐरे में लीनियर सर्च एल्गोरिदम:



int linearSearch(int arr[], int n, int x) {    for (int i = 0; i < n; i++) {        if (arr[i] == x)            return i; // इंडेक्स लौटाता है    }    return -1; // नहीं मिला}


जटिलता: O(n)। गति बढ़ाने के लिए STL से std::vector का उपयोग करें — यह स्वचालित रूप से मेमोरी का प्रबंधन करता है।



लिंक्ड लिस्ट: सिंगली और डबली लिंक्ड



लिंक्ड लिस्ट नोड्स से बनी होती है, जिनमें से प्रत्येक में डेटा और अगले (या पिछले) तत्व का पॉइंटर होता है। C++ में अक्सर std::forward_list (सिंगली लिंक्ड) और std::list (डबली लिंक्ड) का उपयोग किया जाता है।



सरल सिंगली लिंक्ड लिस्ट का कार्यान्वयन:



struct Node {    int data;    Node* next;};

class LinkedList {private: Node* head;public: LinkedList() : head(nullptr) {} void insert(int val) { Node* newNode = new Node{val, nullptr}; if (!head) { head = newNode; return; } Node* temp = head; while (temp->next) temp = temp->next; temp->next = newNode; } void display() { Node* temp = head; while (temp) { cout << temp->data << " -> "; temp = temp->next; } cout << "nullptr" << endl; }};


लिस्ट के लाभ:

  • गतिशील आकार
  • बीच में तेज़ इंसर्शन और डिलीशन (यदि पॉइंटर है तो O(1))

नुकसान:

  • इंडेक्स द्वारा धीमी पहुँच (O(n))
  • पॉइंटर्स के लिए अतिरिक्त मेमोरी


स्टैक और क्यू: LIFO और FIFO सिद्धांत



स्टैक (Stack) "अंतिम आया, पहला गया" (LIFO) सिद्धांत पर काम करता है। क्यू (Queue) "पहला आया, पहला गया" (FIFO) सिद्धांत पर काम करता है। C++ में ये STL में कार्यान्वित हैं।



स्टैक के उपयोग का उदाहरण:



#include <stack>#include                

ब्लॉग

पुस्तक अनुशंसाएँ