BCA / B.Tech 7 min read

Algorithm of Pointer in Hindi

Pointer Algorithm in Data structure in Hindi | पॉइंटर एल्गोरिदम :


Introduction to Pointer in Data structure in Hindi | पॉइंटर का परिचय :

पॉइंटर एक विशेष प्रकार का वेरिएबल होता है जो किसी अन्य वेरिएबल का मेमोरी एड्रेस स्टोर करता है। यह प्रोग्रामिंग में डायनामिक मेमोरी एलोकेशन, डेटा स्ट्रक्चर मैनेजमेंट, और फ़ंक्शन पॉइंटर्स जैसे कार्यों के लिए उपयोगी होता है। पॉइंटर्स की शक्ति डायरेक्ट मेमोरी एक्सेस और कॉम्प्लेक्स डेटा 
स्ट्रक्चर को सरल बनाने में होती है।

पॉइंटर एल्गोरिदम एक महत्वपूर्ण प्रोग्रामिंग टूल है, जिसका उपयोग डायनामिक मेमोरी एलोकेशन, स्वैपिंग, लिंक्ड लिस्ट, एरे हैंडलिंग, और फंक्शन पॉइंटर्स में होता है। पॉइंटर के सही उपयोग से प्रोग्राम की क्षमता और कार्यक्षमता को बढ़ाया जा सकता है। हालांकि, पॉइंटर का
 गलत उपयोग प्रोग्रामिंग में समस्याएँ पैदा कर सकता है, इसलिए इसे सावधानी से उपयोग करना आवश्यक है।


Uses of Pointer Algorithm in Data structure in Hindi | पॉइंटर एल्गोरिदम के उपयोग :

पॉइंटर का उपयोग विभिन्न प्रकार के एल्गोरिदम में होता है, जिनमें डायनामिक मेमोरी एलोकेशन, लिंक्ड लिस्ट, एरे हैंडलिंग, और अन्य जटिल डेटा स्ट्रक्चर शामिल हैं। पॉइंटर एल्गोरिदम से मेमोरी को अधिक कुशलता से मैनेज और एक्सेस किया जा सकता है।

Key Operations in Pointer Algorithm in Data structure in Hindi | पॉइंटर एल्गोरिदम के प्रमुख कार्य :

1. मेमोरी एलोकेशन (Memory Allocation)

पॉइंटर डायनामिक मेमोरी एलोकेशन में एक महत्वपूर्ण भूमिका निभाते हैं। इसका उपयोग मेमोरी को एलोकेट और डीलोकेट करने के लिए किया जाता है, जैसे malloc() और free() के माध्यम से।

एल्गोरिदम:

मेमोरी एलोकेट करें:
int *p = (int *)malloc(sizeof(int)); // मेमोरी एलोकेट करना
वैल्यू असाइन करें:
*p = 10; // असाइन करना
मेमोरी डीलोकेट करें:
free(p); // मेमोरी डीलोकेट करना

2. स्वैपिंग एल्गोरिदम (Swapping Algorithm)

दो वेरिएबल की वैल्यू को पॉइंटर्स के माध्यम से स्वैप किया जा सकता है। बिना तीसरे वेरिएबल के, हम पॉइंटर के द्वारा डेटा की अदला-बदली कर सकते हैं।

एल्गोरिदम:

दो वेरिएबल को पॉइंटर में स्टोर करें:
int a = 10, b = 20;
int *p1 = &a, *p2 = &b;
स्वैपिंग करें:
int temp = *p1;
*p1 = *p2;
*p2 = temp;

3. लिंक्ड लिस्ट एल्गोरिदम (Linked List Algorithm)

लिंक्ड लिस्ट पॉइंटर का उपयोग करके बनाई जाती है, जहां प्रत्येक नोड अगली नोड का एड्रेस स्टोर करता है। यह डेटा को डायनामिक रूप से स्टोर और मैनेज करने के लिए उपयोगी होता है।

एल्गोरिदम:

नया नोड बनाएँ:
struct Node {
    int data;
    struct Node *next;
};
struct Node *newNode = (struct Node *)malloc(sizeof(struct Node));
newNode->data = 10;
newNode->next = NULL;

लिंक्ड लिस्ट में नया नोड जोड़ें:

newNode->next = head; // पहले नोड के बाद जोड़ना
head = newNode; // नए नोड को हेड बनाना

4. एरे हैंडलिंग एल्गोरिदम (Array Handling Algorithm)

एरे को पॉइंटर के माध्यम से एक्सेस और मैनेज किया जा सकता है। पॉइंटर द्वारा हम एरे के एलिमेंट्स को आसानी से एक्सेस कर सकते हैं।

एल्गोरिदम:

एरे के एलिमेंट्स को एक्सेस करें:
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr;
for(int i = 0; i < 5; i++) {
    printf("%d ", *(p + i)); // पॉइंटर द्वारा एरे एलिमेंट्स को एक्सेस करना
}

5. फंक्शन पॉइंटर (Function Pointers)

फंक्शन पॉइंटर का उपयोग किसी फंक्शन को डायनामिक रूप से कॉल करने के लिए किया जाता है। यह प्रोग्रामिंग में पॉलिमॉर्फिज़्म को लागू करने में उपयोगी होता है।

एल्गोरिदम:

फंक्शन को पॉइंट करें:
void func() {
    printf("Hello, World!");
}
void (*fptr)() = func; // फंक्शन पॉइंटर
fptr(); // फंक्शन को पॉइंटर द्वारा कॉल करना

6. मल्टी-लेवल पॉइंटर (Multi-Level Pointer)

पॉइंटर के द्वारा मल्टी-लेवल पॉइंटर बनाए जा सकते हैं, यानी एक पॉइंटर किसी दूसरे पॉइंटर को पॉइंट करता है। यह तब उपयोगी होता है जब हमें जटिल डेटा स्ट्रक्चर्स या डायनामिक डेटा हैंडलिंग करनी हो।

एल्गोरिदम:

मल्टी-लेवल पॉइंटर:
int a = 10;
int *p = &a;
int **pp = &p; // मल्टी-लेवल पॉइंटर
printf("%d", **pp); // आउटपुट 10