ड्याक प्रयोग गरी स्ट्याक र लाम लागू गर्नुहोस्


कठिनाई तह सजिलो
बारम्बार सोधिन्छ कट्टरपन्थी जीई हेल्थकेयर MAQ Myntra Qualcomm
Dequeue लाम थाक

समस्या वक्तव्य

समस्या "Deque को उपयोग गरेर स्ट्याक र लाम लागू गर्नुहोस्" भन्छ स्ट्याक र लाम लागू गर्न एल्गोरिथ्म लेख्न Deque (दोहोरो समाप्त प Que्क्ति)।

उदाहरण (स्ट्याक)

Push(1)
Push(2)
Push(3)
Pop()
isEmpty()
Pop()
Size()
3
false
2
1

उदाहरण (लाम)

Enqueue(1)
Enqueue(2)
Enqueue(3)
Dequeue
isEmpty()
Size()
Dequeue()
1
false
2
2

 

अल्गोरिदम

A deque(डबल एन्ड्ड प Que्क्ति) एक विशेष प्रकारको लाम हो जसमा दुबै छेउमा सम्मिलन र मेटाउन सकिन्छ। Deque को यो रोचक सम्पत्ती स्ट्याक वा यसबाट एक कतार लागू गर्न प्रयोग गर्न सकिन्छ।
तलको छविले एक Deque देखाउँदछ,

ड्याक प्रयोग गरी स्ट्याक र लाम लागू गर्नुहोस्

थाक

थाक अन्तिममा फर्स्ट आउट (LIFO) डाटा संरचना हो, जुन तत्वहरू उही छेउबाट पप आउट हुन्छन् जहाँ उनीहरू धकेल्छन्। हामी डेक्को अगाडि स्ट्याकको लागि पुश र पप आपरेशन गर्न प्रयोग गरौं।

Push (x)

एक एलिमेन्ट x लाई स्ट्याकमा धकेल्न, एलिमेन्ट x लाई Deque को अगाडि जोड्न

समय जटिलता = O (१)

पप ()

पप अपरेशन पुशको उहि पट्टि हुन्छ, त्यो हो स्ट्याकबाट एलिमेन्ट पप गर्न, डेक्को अगाडि रहेको एलिमेन्टलाई डिलीट गरेर र फर्किन्छ।

समय जटिलता = O (१)

खाली छ()

यदि Deque खाली छ स्ट्याक खाली छ अन्यथा छैन। त्यसैले DeE को इम्प्टी फिर्ता गर्नुहोस्।

समय जटिलता = O (१)

आकार ()

स्ट्याकको आकार Deque को आकार जस्तै छ, त्यसैले deque को आकार फिर्ता गर्नुहोस्।

समय जटिलता = O (१)

कोड

जाभा कोड deque को उपयोग गरी स्ट्याक लागू गर्न
import java.util.Deque;
import java.util.LinkedList;
class StackUsingDeque {
    // deque used to implement stack
    private static Deque<Integer> deque;

    private static void push(int x) {
        // Add the element x to the front of Deque
        deque.addFirst(x);
    }

    private static int pop() {
        // if deque is not empty remove an element from the front of deque
        if (!deque.isEmpty()) {
            return deque.removeFirst();
        }
        return -1;
    }

    private static boolean isEmpty() {
        // stack is empty if deque is empty
        return deque.isEmpty();
    }

    private static int size() {
        // size of stack is same as size of Deque
        return deque.size();
    }

    public static void main(String[] args) {
        deque = new LinkedList<>();

        // Example
        push(1);
        push(2);
        push(3);
        System.out.println(pop());
        System.out.println(isEmpty());
        System.out.println(pop());
        System.out.println(size());
    }
}
3
false
2
1
C ++ कोड लागू गर्नुहोस् स्टिक कार्यान्वयन गर्न deque को प्रयोग गरेर
#include <bits/stdc++.h>
using namespace std;

// deque used to implement stack
deque<int> dq;

void push(int x) {
    // Add the element x to the front of Deque
    dq.push_front(x);
}

int pop() {
    // if deque is not empty remove an element from the front of deque
    if (!dq.empty()) {
        int top = dq.front();
        dq.pop_front();
        return top;
    }
    return -1;
}

int size() {
    // size of stack is same as size of Deque
    return dq.size();
}

bool isEmpty() {
    // stack is empty if deque is empty
    return dq.empty();
}

int main() {
    // Example
    push(1);
    push(2);
    push(3);
    cout<<pop()<<endl;
    if (isEmpty()) {
        cout<<"true"<<endl;
    } else {
        cout<<"false"<<endl;
    }
    cout<<pop()<<endl;
    cout<<size()<<endl;
    
    return 0;
}
3
false
2
1

लाम

लाम फर्स्ट इन फर्स्ट आउट (FIFO) डाटा स्ट्रक्चर हो, त्यो एन्क्यू र डेफ्यू अपरेशनहरू विपरित पक्षहरूमा गरिन्छ। हामी एक्वी्यू अपरेशनको लागि डेक्को अगाडि र डेक्‍यू अपरेशनको लागि डेकको अगाडि प्रयोग गरौं।

एन्क्यू (x)

लाममा एलिमेन्ट एक्स लामबद्ध गर्न, एल्कमेन्ट डेक्को अगाडि थप्नुहोस्।

समय जटिलता = O (१)

Dequeue ()

लामबाट एलिमेन्ट पत्ता लगाउन, एल्कमेन्ट Deque को पछाडि हटाउनुहोस् र फिर्ता गर्नुहोस्।

समय जटिलता = O (१)

खाली छ()

यो लाम खाली छ यदि Deque खाली छ, अन्यथा छैन। त्यसैले DeE को इम्प्टी फिर्ता गर्नुहोस्।

समय जटिलता = O (१)

आकार ()

लामको आकार Deque को आकार जस्तै छ, त्यसैले deque को आकार फिर्ता गर्नुहोस्।

समय जटिलता = O (१)

कोड

जाभा कोड deque को उपयोग गरी प implement्क्ति लागू गर्न
import java.util.Deque;
import java.util.LinkedList;
class QueueUsingDeque {
    // deque used to implement queue
    private static Deque<Integer> deque;

    private static void enqueue(int x) {
        // add the element x at the front of deque
        deque.addFirst(x);
    }

    private static int dequeue() {
        // if deque is not empty remove and return the rear of deque
        if (!deque.isEmpty()) {
            return deque.removeLast();
        }
        return -1;
    }

    private static boolean isEmpty() {
        // queue is empty if deque is empty
        return deque.isEmpty();
    }

    private static int size() {
        // size of queue is same as size of deque
        return deque.size();
    }

    public static void main(String[] args) {
        deque = new LinkedList<>();

        // Example
        enqueue(1);
        enqueue(2);
        enqueue(3);
        System.out.println(dequeue());
        System.out.println(isEmpty());
        System.out.println(size());
        System.out.println(dequeue());
    }
}
1
false
2
2
C ++ कोड due को उपयोग गरी प implement्क्ति लागू गर्न
#include <bits/stdc++.h>
using namespace std;

// deque used to implement queue
deque<int> dq;

void enqueue(int x) {
    // add the element x at the front of deque
    dq.push_front(x);
}

int dequeue() {
    // if deque is not empty remove and return the rear of deque
    if (!dq.empty()) {
        int front = dq.back();
        dq.pop_back();
        return front;
    }
    return -1;
}

int size() {
    // size of queue is same as size of deque
    return dq.size();
}

bool isEmpty() {
    // queue is empty if deque is empty
    return dq.empty();
}

int main() {
    // Example
    enqueue(1);
    enqueue(2);
    enqueue(3);
    cout<<dequeue()<<endl;
    if (isEmpty()) {
        cout<<"true"<<endl;
    } else {
        cout<<"false"<<endl;
    }
    cout<<size()<<endl;
    cout<<dequeue()<<endl;
    
    return 0;
}
1
false
2
2