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

C भाषा में स्टैक डेटा स्ट्रक्चर की अवधारणा

डेटा स्ट्रक्चर का परिचय

डेटा स्ट्रक्चर डेटा का संरचित संग्रह है। यह दो प्रकार का होता है:

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

स्टैक क्या है?

स्टैक एक रैखिक डेटा स्ट्रक्चर है जहां डेटा केवल एक छोर (टॉप) पर ही डाला और हटाया जाता है। यह LIFO (लास्ट इन फर्स्ट आउट) सिद्धांत का पालन करता है।

मुख्य ऑपरेशन्स

  • Push: स्टैक में एलिमेंट डालना।
  • Pop: स्टैक से एलिमेंट हटाना।

स्टैक की स्थितियां

  • स्टैक ओवरफ्लो: भरे हुए स्टैक में एलिमेंट डालने का प्रयास।
  • स्टैक अंडरफ्लो: खाली स्टैक से एलिमेंट हटाने का प्रयास।

एल्गोरिदम

Push()

if (top == n-1)
    printf("Stack Overflow");
else {
    top++;
    a[top] = item;
}

Pop()

if (top == -1)
    printf("Stack Underflow");
else {
    item = a[top];
    top--;
}

Display()

if (top == -1)
    printf("Stack is empty");
else {
    for (i = 0; i <= top; i++)
        printf("%d ", a[i]);
}

C प्रोग्राम: ऐरे का उपयोग करके स्टैक का कार्यान्वयन

#include <stdio.h>
#include <conio.h>

int top = -1, n, a[100];

void push();
void pop();
void display();

int main() {
    int ch;
    clrscr();
    printf("Enter the size of the stack: ");
    scanf("%d", &n);
    printf("Stack Implementation\n");
    printf("1. Push\n2. Pop\n3. Exit\n");
    do {
        printf("Enter your choice: ");
        scanf("%d", &ch);
        switch(ch) {
            case 1: push(); display(); break;
            case 2: pop(); display(); break;
            case 3: exit(0);
            default: printf("Invalid choice");
        }
    } while(ch >= 1 && ch <= 3);
    getch();
    return 0;
}

void push() {
    int item;
    if (top == n-1)
        printf("Stack Overflow");
    else {
        printf("Enter element to insert: ");
        scanf("%d", &item);
        top++;
        a[top] = item;
    }
}

void pop() {
    int item;
    if (top == -1)
        printf("Stack Underflow");
    else {
        item = a[top];
        top--;
        printf("Deleted element = %d", item);
    }
}

void display() {
    int i;
    if (top == -1)
        printf("Stack is empty");
    else {
        printf("Stack contents: ");
        for (i = 0; i <= top; i++)
            printf("%d\t", a[i]);
    }
}

आउटपुट उदाहरण

Enter size of stack: 5
Stack Implementation
1. Push
2. Pop
3. Exit
Enter choice: 1
Enter element: 10
Stack contents: 10
Enter choice: 1
Enter element: 20
Stack contents: 10 20
Enter choice: 2
Deleted element = 20
Stack contents: 10
Enter choice: 2
Deleted element = 10
Stack contents: Stack is empty
Enter choice: 2
Stack Underflow
  1. C भाषा में यूनियन टू पॉइंटर (Union to Pointer) C भाषा में यूनियन टू पॉइंटर (Union to Pointer)

    यूनियन (Union) क्या है? यूनियन एक यूजर-डिफाइंड डेटा प्रकार है जो एक ही मेमोरी स्थान को विभिन्न डेटा प्रकारों के सदस्यों के लिए साझा करने की अनुमति देता है। किसी भी समय केवल एक सदस्य ही मान रख सकता है। यूनियन की घोषणा union यूनियन_नाम { डेटा_प्रकार सदस्य1; डेटा_प्रकार सदस्य2; // ... };

  1. C भाषा में पॉइंटर एक्सेस करने की अवधारणा C भाषा में पॉइंटर एक्सेस करने की अवधारणा

    पॉइंटर घोषणा, प्रारंभिकरण और एक्सेस 1. सामान्य चर int qty = 179; // मेमोरी में: पता 1000 पर मान 179 संग्रहीत 2. पॉइंटर घोषणा int *p; // p एक पॉइंटर चर है जो int का पता रख सकता है 3. पॉइंटर प्रारंभिकरण int qty = 175; int *p; p = &qty; // एड्रेस-ऑफ ऑपरेटर (&) से पता प्राप्त करें मेमोरी आर

  1. C# में क्लास की अवधारणा समझाएं C# में क्लास की अवधारणा समझाएं

    क्लास C# में आवश्यक प्रकारों में से एक है। हम क्लास को समस्या डोमेन से संबंधित ऑब्जेक्ट्स के लिए ब्लूप्रिंट के रूप में सोच सकते हैं। यह एक टेम्पलेट है जिससे हम ऑब्जेक्ट्स बनाते हैं, उस संरचना और व्यवहार को परिभाषित करते हुए जो इस क्लास से बने ऑब्जेक्ट्स के सेट द्वारा साझा किया जाएगा। सरल शब्दों में,