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

C++ प्रोग्राम: लिंक्ड लिस्ट का उपयोग करके क्यू कार्यान्वयन


क्यू (Queue) डेटा संरचना

क्यू एक अमूर्त डेटा संरचना है जो FIFO (First In First Out) सिद्धांत का पालन करती है - पहले डाला गया तत्व पहले निकाला जाता है।

लिंक्ड लिस्ट का उपयोग करके क्यू कार्यान्वयन

#include <iostream>
using namespace std;

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

struct Node* front = NULL;
struct Node* rear = NULL;
struct Node* temp;

void Insert() {
    int val;
    cout << "Insert element in queue: " << endl;
    cin >> val;
    if (rear == NULL) {
        rear = (struct Node*)malloc(sizeof(struct Node));
        rear->next = NULL;
        rear->data = val;
        front = rear;
    } else {
        temp = (struct Node*)malloc(sizeof(struct Node));
        rear->next = temp;
        temp->data = val;
        temp->next = NULL;
        rear = temp;
    }
}

void Delete() {
    temp = front;
    if (front == NULL) {
        cout << "Underflow" << endl;
        return;
    } else if (temp->next != NULL) {
        temp = temp->next;
        cout << "Element deleted: " << front->data << endl;
        free(front);
        front = temp;
    } else {
        cout << "Element deleted: " << front->data << endl;
        free(front);
        front = NULL;
        rear = NULL;
    }
}

void Display() {
    temp = front;
    if (front == NULL && rear == NULL) {
        cout << "Queue is empty" << endl;
        return;
    }
    cout << "Queue elements: ";
    while (temp != NULL) {
        cout << temp->data << " ";
        temp = temp->next;
    }
    cout << endl;
}

int main() {
    int ch;
    cout << "1) Insert element to queue" << endl;
    cout << "2) Delete element from queue" << endl;
    cout << "3) Display all elements of queue" << endl;
    cout << "4) Exit" << endl;
    
    do {
        cout << "Enter your choice: " << endl;
        cin >> ch;
        switch (ch) {
            case 1: Insert(); break;
            case 2: Delete(); break;
            case 3: Display(); break;
            case 4: cout << "Exit" << endl; break;
            default: cout << "Invalid choice" << endl;
        }
    } while(ch != 4);
    return 0;
}

आउटपुट

1) Insert element to queue
2) Delete element from queue
3) Display all elements of queue
4) Exit
Enter your choice: 1
Insert the element in queue: 4
Enter your choice: 1
Insert the element in queue: 3
Enter your choice: 1
Insert the element in queue: 5
Enter your choice: 2
Element deleted from queue is: 4
Enter your choice: 3
Queue elements are: 3 5
Enter your choice: 7
Invalid choice
Enter your choice: 4
Exit

कोड व्याख्या

Insert() फ़ंक्शन

यदि क्यू खाली है (rear == NULL), तो पहला नोड बनाया जाता है। अन्यथा, नया नोड rear के बाद जोड़ा जाता है और rear को अपडेट किया जाता है।

Delete() फ़ंक्शन

अंडरफ्लो की जांच करता है। यदि केवल एक तत्व है, तो front और rear दोनों NULL हो जाते हैं। अन्यथा front को अगले नोड पर ले जाया जाता है।

Display() फ़ंक्शन

front से rear तक सभी तत्वों को ट्रैवर्स करके प्रदर्शित करता है।

मुख्य मेनू

उपयोगकर्ता को इन्सर्ट, डिलीट, डिस्प्ले या एक्जिट का विकल्प देता है।

  1. C++ में डबल लिंक्ड लिस्ट का उपयोग करके प्राथमिकता कतार C++ में डबल लिंक्ड लिस्ट का उपयोग करके प्राथमिकता कतार

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

  1. C++ प्रोग्राम: एडजेसेंसी लिस्ट इम्प्लीमेंट करना C++ प्रोग्राम: एडजेसेंसी लिस्ट इम्प्लीमेंट करना

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

  1. C++ प्रोग्राम: लिंक्ड लिस्ट का उपयोग करके ग्राफ प्रतिनिधित्व करना C++ प्रोग्राम: लिंक्ड लिस्ट का उपयोग करके ग्राफ प्रतिनिधित्व करना

    एक ग्राफ का इन्सिडेंस मैट्रिक्स ग्राफ को मेमोरी में स्टोर करने का एक और प्रतिनिधित्व है। यह मैट्रिक्स एक वर्ग मैट्रिक्स नहीं है। इन्सिडेंस मैट्रिक्स का ऑर्डर V x E होता है। जहां V वर्टेक्स की संख्या है और E ग्राफ में एज की संख्या है। इस मैट्रिक्स की प्रत्येक पंक्ति में हम वर्टेक्स रखते हैं, और प्रत