Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में सर्कुलर लिंक्ड लिस्ट में नोड्स की गिनती करें


हमें नोड्स के साथ एक सर्कुलर लिंक्ड लिस्ट दी गई है और कार्य सर्कुलर लिंक्ड लिस्ट में मौजूद नोड्स की संख्या की गणना करना है।

सर्कुलर लिंक्ड लिस्ट लिंक्ड लिस्ट का एक प्रकार है जिसमें पहला तत्व अंतिम तत्व की ओर इंगित करता है और अंतिम तत्व पहले तत्व की ओर इंगित करता है। सिंगली लिंक्ड लिस्ट और डबली लिंक्ड लिस्ट दोनों को सर्कुलर लिंक्ड लिस्ट में बनाया जा सकता है।

नीचे दिए गए प्रोग्राम में, हम सिंगली लिंक्ड लिस्ट को सर्कुलर लिंक्ड लिस्ट के रूप में लागू कर रहे हैं ताकि उसमें नोड्स की संख्या की गणना की जा सके।

C++ में सर्कुलर लिंक्ड लिस्ट में नोड्स की गिनती करें

उदाहरण के लिए

इनपुट - नोड्स-: 20, 1, 2, 3, 4, 5 आउटपुट - नोड्स की गिनती-: 6 इनपुट - नोड्स-: 20, 1, 2, 3, 4, 5, 7, 8, 9, 12 आउटपुट - नोड्स की गिनती-: 10

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण -

  • सिंगली लिंक्ड लिस्ट के लिए संरचना बनाएं जिसमें नोड द्वारा धारित पता और डेटा शामिल हो।

  • push() फंक्शन बनाएं जिसका उपयोग नोड में डेटा इन्सर्ट करने के लिए किया जाएगा।

  • अंतिम नोड में, पहले नोड का पता संग्रहीत करें ताकि सिंगली लिंक्ड लिस्ट सर्कुलर लिंक्ड लिस्ट के रूप में कार्य करे।

  • एक काउंट फंक्शन बनाएं जो सर्कुलर लिंक्ड लिस्ट में मौजूद नोड्स की कुल संख्या की गणना करेगा।

उदाहरण

#include <stdio.h>
#include <stdlib.h>

/* नोड को परिभाषित करना */
struct node {
    int data;
    struct node* next;
};

// सर्कुलर लिस्ट में नोड इन्सर्ट करना
void push(struct node** head_ref, int data) {
    struct node* ptr1 = (struct node*)malloc(sizeof(struct node));
    struct node* temp = *head_ref;
    ptr1->data = data;
    ptr1->next = *head_ref;
    // नया तत्व इन्सर्ट करने के लिए अंतिम नोड पर जाएं।
    if (*head_ref != NULL) {
        while (temp->next != *head_ref) {
            temp = temp->next;
        }
        temp->next = ptr1;
    } else {
        ptr1->next = ptr1; // पहले नोड के लिए
    }
    *head_ref = ptr1;
}

// नोड्स की संख्या गिनने के लिए फंक्शन
int count_fun(struct node* head) {
    struct node* temp = head;
    int result = 0;
    if (head != NULL) {
        do {
            temp = temp->next;
            result++;
        } while (temp != head);
    }
    return result;
}

int main() {
    /* लिस्ट को खाली के रूप में आरंभ करना */
    struct node* head = NULL;
    push(&head, 10);
    push(&head, 20);
    push(&head, 30);
    push(&head, 40);
    printf("count of nodes are: %d", count_fun(head));
    return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -

count of nodes are: 4

  1. C++ में सर्कुलर लिंक्ड सूची के नोड्स का योग C++ में सर्कुलर लिंक्ड सूची के नोड्स का योग

    इस समस्या में, हमें एक सर्कुलर लिंक्ड सूची दी गई है। हमारा कार्य एक प्रोग्राम बनाना है जो सर्कुलर लिंक्ड सूची के नोड्स का योग ढूंढे। हमें बस लिंक्ड सूची के सभी नोड मानों को जोड़ना है। कुछ महत्वपूर्ण परिभाषाएं लिंक्ड सूची डेटा संरचनाओं का एक क्रम है, जो लिंक्स के माध्यम से एक साथ जुड़े हुए हैं।

  1. C++ में लिंक्ड सूची के वैकल्पिक नोड्स का योग C++ में लिंक्ड सूची के वैकल्पिक नोड्स का योग

    इस समस्या में, हमें एक लिंक्ड सूची दी गई है। हमारा कार्य लिंक्ड सूची के वैकल्पिक नोड्स का योग प्रिंट करना है। लिंक्ड सूची डेटा संरचनाओं का एक क्रम है जो लिंक्स के माध्यम से एक साथ जुड़े हुए हैं। अब, आइए समस्या पर वापस आते हैं। यहां, हम लिंक्ड सूची के वैकल्पिक नोड्स को जोड़ेंगे। इसका मतलब है हम

  1. C++ में पूर्ण बाइनरी ट्री के नोड्स गिनें C++ में पूर्ण बाइनरी ट्री के नोड्स गिनें

    मान लीजिए हमारे पास एक पूर्ण बाइनरी ट्री है, हमें नोड्स की संख्या गिननी है। तो यदि ट्री इस तरह है −तो आउटपुट 6 होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगेयह रिकर्सिव दृष्टिकोण का उपयोग करेगा। यह मेथड, countNodes() रूट को आर्गुमेंट के रूप में ले रहा है।hr := 0 और hl := 0दो नोड्स l और r