C++ में एल्गोरिदम और डेटा संरचनाएँ: एक व्यावहारिक मार्गदर्शिका

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

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

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

C++ में एल्गोरिदम और डेटा संरचनाएँ: सिद्धांत से व्यवहार तक

\n\n

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

\n\n

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

\n\n

1. डायनामिक ऐरे और मेमोरी प्रबंधन

\n\n

आइए मूल बातों से शुरू करें — डायनामिक ऐरे। स्टैटिक ऐरे के विपरीत, जिनका आकार कंपाइलेशन चरण में निर्धारित होता है, डायनामिक ऐरे प्रोग्राम निष्पादन के दौरान आकार बदलने की अनुमति देते हैं। C++ में, इसके लिए new[] और delete[] ऑपरेटर का उपयोग किया जाता है।

\n\n
#include <iostream>\n\nint main() {\n    int size = 5;\n    int* arr = new int[size]; // मेमोरी आवंटन\n    \n    // आरंभीकरण\n    for(int i = 0; i < size; i++) {\n        arr[i] = i * 10;\n    }\n    \n    // आउटपुट\n    for(int i = 0; i < size; i++) {\n        std::cout << arr[i] << " ";\n    }\n    \n    delete[] arr; // मेमोरी मुक्त करना\n    return 0;\n}
\n\n

यह याद रखना महत्वपूर्ण है कि डायनामिक मेमोरी के साथ काम करते समय, आप इसे मुक्त करने के लिए जिम्मेदार हैं। मेमोरी लीक C++ में सबसे आम समस्याओं में से एक है। स्वचालित मेमोरी प्रबंधन के लिए मानक लाइब्रेरी से स्मार्ट पॉइंटर्स (std::unique_ptr, std::shared_ptr) का उपयोग करने की अनुशंसा की जाती है।

\n\n

2. स्टैक और क्यू: क्लासिक डेटा संरचनाएँ

\n\n

स्टैक और क्यू दो मौलिक डेटा संरचनाएँ हैं जो क्रमशः LIFO (लास्ट इन, फर्स्ट आउट) और FIFO (फर्स्ट इन, फर्स्ट आउट) सिद्धांतों को लागू करती हैं। आइए डायनामिक ऐरे का उपयोग करके C++ में उनके कार्यान्वयन पर विचार करें।

\n\n

स्टैक का कार्यान्वयन

\n\n
#include <iostream>\n#include <stdexcept>\n\nclass Stack {\nprivate:\n    int* data;\n    int capacity;\n    int top;\n    \npublic:\n    Stack(int size) : capacity(size), top(-1) {\n        data = new int[capacity];\n    }\n    \n    ~Stack() {\n        delete[] data;\n    }\n    \n    void push(int value) {\n        if(top >= capacity - 1) {\n            throw std::overflow_error("Stack overflow");\n        }\n        data[++top] = value;\n    }\n    \n    int pop() {\n        if(isEmpty()) {\n            throw std::underflow_error("Stack underflow");\n        }\n        return data[top--];\n    }\n    \n    bool isEmpty() const {\n        return top == -1;\n    }\n    \n    int peek() const {\n        if(isEmpty()) {\n            throw std::underflow_error("Stack is empty");\n        }\n        return data[top];\n    }\n};\n\nint main() {\n    Stack stack(5);\n    stack.push(10);\n    stack.push(20);\n    stack.push(30);\n    \n    std::cout << "शीर्ष तत्व: " << stack.peek() << std::endl;\n    std::cout << "निकाल रहे हैं: " << stack.pop() << std::endl;\n    std::cout << "निकाल रहे हैं: " << stack.pop() << std::endl;\n    \n    return 0;\n}
\n\n

क्यू का कार्यान्वयन

\n\n
#include <iostream>\n\nclass Queue {\nprivate:\n    int* data;\n    int capacity;\n    int front;\n    int rear;\n    int count;\n    \npublic:\n    Queue(int size) : capacity(size), front(0), rear(-1), count(0) {\n        data = new int[capacity];\n    }\n    \n    ~Queue() {\n        delete[] data;\n    }\n    \n    void enqueue(int value) {\n        if(isFull()) {\n            throw std::overflow_error("Queue overflow");\n        }\n        rear = (rear + 1) %                

ब्लॉग

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