Stack এর বাস্তব জীবনের উদাহরণ (Undo Operation)

স্ট্যাক (Stack in C) - সি দিয়ে ডেটা স্ট্রাকচার (DSA using C) - Computer Programming

304

Stack হল একটি ডেটা স্ট্রাকচার যা LIFO (Last In, First Out) পদ্ধতি অনুসরণ করে। এই পদ্ধতি অনেক বাস্তব জীবনের পরিস্থিতিতে কার্যকরী। এর মধ্যে একটি অন্যতম উদাহরণ হলো Undo Operation। এটি প্রায় সব সফটওয়্যার অ্যাপ্লিকেশনে দেখা যায়, বিশেষ করে টেক্সট এডিটর, গ্রাফিক ডিজাইন সফটওয়্যার, এবং কোড এডিটরগুলিতে।


১. Undo Operation এর ধারণা

Undo Operation ব্যবহারকারীর শেষ করা কাজকে বাতিল করার সুযোগ দেয়। উদাহরণস্বরূপ, একটি টেক্সট এডিটরে আপনি যদি কিছু লেখেন এবং পরে সেটি মুছে ফেলতে চান, তবে Undo ফিচারটি আপনাকে পূর্ববর্তী অবস্থায় ফিরিয়ে নিয়ে যেতে সহায়তা করে।

২. Stack এর ভূমিকা

Undo Operation বাস্তবায়নের জন্য স্ট্যাক ব্যবহার করা হয়। যখন ব্যবহারকারী একটি কাজ করে (যেমন টেক্সট লেখা, ফাইল সেভ করা, বা একটি ছবি সম্পাদনা করা), তখন সেই কাজের তথ্য স্ট্যাকে Push করা হয়। যদি ব্যবহারকারী Undo অপারেশন চালায়, তাহলে শেষ করা কাজটি স্ট্যাক থেকে Pop করা হয়, এবং পূর্ববর্তী অবস্থায় ফিরে যাওয়া যায়।

৩. উদাহরণস্বরূপ কাজের প্রক্রিয়া

কাজের সংরক্ষণ:

  • যখন ব্যবহারকারী একটি নতুন কাজ সম্পন্ন করে, যেমন কিছু টেক্সট টাইপ করে, সেই কাজের তথ্য (যেমন "Type Hello World") স্ট্যাকে Push করা হয়।

Undo অপারেশন:

  • ব্যবহারকারী যদি Undo অপারেশন করে, তাহলে স্ট্যাক থেকে শেষের কাজটি Pop করা হয় এবং আগের অবস্থায় ফিরে যাওয়া হয় (যেমন "Hello World" মুছে ফেলা হয়)।

৪. স্ট্যাকের মাধ্যমে Undo Operation বাস্তবায়ন

নিচে একটি সাধারণ উদাহরণ দেওয়া হলো যেখানে Undo অপারেশন স্ট্যাকের মাধ্যমে কার্যকরীভাবে বাস্তবায়িত হয়।

C প্রোগ্রাম উদাহরণ:

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

#define MAX 100 // Maximum number of operations

// Stack structure for undo operations
struct Stack {
    char* items[MAX];  // Stack to hold operations
    int top;           // Index of the top operation
};

// Function to initialize the stack
void initStack(struct Stack* s) {
    s->top = -1; // Stack is initially empty
}

// Function to check if the stack is empty
int isEmpty(struct Stack* s) {
    return s->top == -1;
}

// Function to push an operation onto the stack
void push(struct Stack* s, char* operation) {
    if (s->top < MAX - 1) {
        s->items[++(s->top)] = strdup(operation); // Duplicate string to avoid memory issues
        printf("Operation '%s' added to undo stack.\n", operation);
    } else {
        printf("Stack Overflow! Cannot add more operations.\n");
    }
}

// Function to pop an operation from the stack
char* pop(struct Stack* s) {
    if (isEmpty(s)) {
        printf("No operations to undo.\n");
        return NULL;
    } else {
        return s->items[(s->top)--]; // Return top operation
    }
}

// Main function to demonstrate undo operations
int main() {
    struct Stack undoStack; // Create the undo stack
    initStack(&undoStack);  // Initialize the stack

    // Simulate operations
    push(&undoStack, "Type 'Hello World'");
    push(&undoStack, "Type 'This is a test'");
    push(&undoStack, "Save the document");

    // Undo last operation
    char* lastOperation = pop(&undoStack);
    if (lastOperation) {
        printf("Undo operation: %s\n", lastOperation);
        free(lastOperation); // Free the duplicated string
    }

    // Undo another operation
    lastOperation = pop(&undoStack);
    if (lastOperation) {
        printf("Undo operation: %s\n", lastOperation);
        free(lastOperation);
    }

    // Show remaining operations
    while (!isEmpty(&undoStack)) {
        lastOperation = pop(&undoStack);
        if (lastOperation) {
            printf("Remaining operation: %s\n", lastOperation);
            free(lastOperation);
        }
    }

    return 0;
}

৫. উপসংহার

Stack হল একটি অত্যন্ত কার্যকরী ডেটা স্ট্রাকচার যা Undo Operation বাস্তবায়নের জন্য ব্যবহৃত হয়। এই প্রযুক্তি ব্যবহার করে ব্যবহারকারীরা সহজেই তাদের পূর্ববর্তী কাজ বাতিল করতে পারে, যা বিভিন্ন অ্যাপ্লিকেশনে একটি গুরুত্বপূর্ণ ফিচার। স্ট্যাকের সাহায্যে Undo Operation কার্যকরভাবে পরিচালনা করা সম্ভব, যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।

Content added By
Promotion

Are you sure to start over?

Loading...