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

C भाषा में लीनियर डेटा स्ट्रक्चर क्यू


डेटा स्ट्रक्चर डेटा का संग्रह है जो संरचित तरीके से व्यवस्थित होता है। इसे दो प्रकारों में विभाजित किया गया है:

  • लीनियर डेटा स्ट्रक्चर - डेटा एक रैखिक फैशन में व्यवस्थित होता है। उदाहरण: एरे, स्ट्रक्चर, स्टैक, क्यू, लिंक्ड लिस्ट।

  • नॉन-लीनियर डेटा स्ट्रक्चर - डेटा पदानुक्रमित तरीके से व्यवस्थित होता है। उदाहरण: ट्री, ग्राफ, सेट, टेबल।

क्यू

यह एक लीनियर डेटा स्ट्रक्चर है, जहां इन्सर्शन रियर एंड पर किया जाता है और डिलीशन फ्रंट एंड पर किया जाता है।

C भाषा में लीनियर डेटा स्ट्रक्चर क्यू

क्यू का क्रम FIFO है - फर्स्ट इन फर्स्ट आउट।

ऑपरेशन्स

  • इन्सर्ट - क्यू में एलिमेंट इन्सर्ट करना।
  • डिलीट - क्यू से एलिमेंट डिलीट करना।

शर्तें

  • क्यू ओवरफ्लो - भरे हुए क्यू में एलिमेंट इन्सर्ट करने का प्रयास।

  • क्यू अंडरफ्लो - खाली क्यू से एलिमेंट डिलीट करने का प्रयास।

एल्गोरिदम

इन्सर्शन ( ) के लिए एल्गोरिदम नीचे दिया गया है:

  • क्यू ओवरफ्लो की जांच करें।
if (r == n) printf("Queue overflow")
  • अन्यथा, क्यू में एलिमेंट इन्सर्ट करें।
q[r] = item 
r++

डिलीशन ( ) के लिए एल्गोरिदम नीचे दिया गया है:

  • क्यू अंडरफ्लो की जांच करें।
if (f == r) printf("Queue under flow")
  • अन्यथा, क्यू से एलिमेंट डिलीट करें।
item = q[f] 
f++

डिस्प्ले ( ) के लिए एल्गोरिदम नीचे दिया गया है:

  • जांचें कि क्यू खाली है या नहीं।
if (f == r) printf("Queue is empty")
  • अन्यथा, 'f' से 'r' तक सभी एलिमेंट्स प्रिंट करें।
for(i=f; i<r; i++) printf("%d", q[i]);

प्रोग्राम

एरे का उपयोग करके क्यू के कार्यान्वयन के लिए C प्रोग्राम निम्नलिखित है:

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

struct Queue { 
    int front, rear, size; 
    unsigned capacity; 
    int* array; 
}; 

struct Queue* createQueue(unsigned capacity){ 
    struct Queue* queue = (struct Queue*)malloc(sizeof(struct Queue)); 
    queue->capacity = capacity; 
    queue->front = queue->size = 0; 
    queue->rear = capacity - 1; 
    queue->array = (int*)malloc(queue->capacity * sizeof(int)); 
    return queue; 
} 

// क्यू भरा है या नहीं
int isFull(struct Queue* queue){ 
    return (queue->size == queue->capacity); 
} 

// क्यू खाली है या नहीं
int isEmpty(struct Queue* queue){ 
    return (queue->size == 0); 
} 

void Enqueue(struct Queue* queue, int item){ 
    if (isFull(queue)) 
        return; 
    queue->rear = (queue->rear + 1) % queue->capacity; 
    queue->array[queue->rear] = item; 
    queue->size = queue->size + 1; 
    printf("%d entered into queue\n", item); 
} 

int Dequeue(struct Queue* queue){ 
    if (isEmpty(queue)) 
        return INT_MIN; 
    int item = queue->array[queue->front]; 
    queue->front = (queue->front + 1) % queue->capacity; 
    queue->size = queue->size - 1; 
    return item; 
} 

// क्यू के फ्रंट को प्राप्त करने का फंक्शन
int front(struct Queue* queue){ 
    if (isEmpty(queue)) 
        return INT_MIN; 
    return queue->array[queue->front]; 
} 

// क्यू के रियर को प्राप्त करने का फंक्शन
int rear(struct Queue* queue){ 
    if (isEmpty(queue)) 
        return INT_MIN; 
    return queue->array[queue->rear]; 
} 

int main(){ 
    struct Queue* queue = createQueue(1000); 
    Enqueue(queue, 100); 
    Enqueue(queue, 200); 
    Enqueue(queue, 300); 
    Enqueue(queue, 400); 
    printf("%d is deleted element from queue\n\n", Dequeue(queue)); 
    printf("1st item in queue is %d\n", front(queue)); 
    printf("last item in queue %d\n", rear(queue)); 
    return 0; 
}

आउटपुट

जब उपरोक्त प्रोग्राम चलाया जाता है, तो यह निम्नलिखित परिणाम देता है:

100 entered into queue 
200 entered into queue 
300 entered into queue 
400 entered into queue 
100 is deleted element from queue 
1st item in queue is 200 
last item in queue 400

  1. C भाषा में संरचना अवधारणा का उपयोग करके बिट फ़ील्ड की व्याख्या C भाषा में संरचना अवधारणा का उपयोग करके बिट फ़ील्ड की व्याख्या

    बिट फ़ील्ड का उपयोग वेरिएबल के आकार को बिट्स के संदर्भ में निर्दिष्ट करने के लिए किया जाता है। आमतौर पर, इसे एक संरचना के अंदर परिभाषित किया जाता है। बिट फ़ील्ड: 1 बाइट = 8 बिट्स उदाहरण के लिए, नीचे एक उदाहरण समझाया गया है: Struct info{ int x:2; }; यहां, x 2 बिट्स पर कब्जा करता है। बिट फ़ील

  1. C भाषा में टॉप-डाउन डिज़ाइन और फंक्शन का स्ट्रक्चर चार्ट C भाषा में टॉप-डाउन डिज़ाइन और फंक्शन का स्ट्रक्चर चार्ट

    एक फंक्शन एक स्व-निहित ब्लॉक है जो एक विशिष्ट सुपरिभाषित कार्य करता है। C भाषा में फंक्शन्स के लाभ पुनर्उपयोगिता (Reusability) प्रोग्राम की लंबाई कम की जा सकती है किसी भी दोषपूर्ण फंक्शन को ढूंढना और ठीक करना आसान है टॉप-डाउन मॉड्यूलर प्रोग्रामिंग की सुविधा देता है टॉप-डाउन डिज़ाइन और स्ट्रक्चर

  1. हाफएज डेटा स्ट्रक्चर (Halfedge Data Structure) हाफएज डेटा स्ट्रक्चर (Halfedge Data Structure)

    परिचय (Introduction) टेम्पलेट पैरामीटर्स के लिए HDS या हाफएज डेटा स्ट्रक्चर (Halfedge Data Structure - संक्षिप्त HalfedgeDS) को एक एज-केंद्रित डेटा स्ट्रक्चर (Edge-centered Data Structure) के रूप में परिभाषित किया जाता है जो वर्टेक्स, एज और फेसेस (Vertices, Edges and Faces) की घटना जानकारी (Incidenc