ڊييڪ استعمال ڪندي اسٽيڪ ۽ قطار لاڳو ڪريو


تڪليف جي سطح آسان
بار بار پڇڻ ۾ فاتح اي صحت ايم Myntra Qualcomm
ڪتب خانو پنگتي حيثيت رکي ٿو چتي

مسئلي جو بيان

مسئلو "ڊيڪ استعمال ڪندي اسٽيڪ ۽ قطار استعمال ڪريو" لکي ٿو ته هڪ ڊيڪ استعمال ڪندي اسٽيڪ ۽ قطار کي لاڳو ڪرڻ لاءِ الگورتھم (ڊبل ڊبل ٿيل قطار).

مثال (اسٽيڪ)

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 ڊيڪ(دوئي تي ختم ٿيل قطار) قطار جو هڪ خاص قسم آهي جنهن ۾ ٻنهي سرنن تي داخل ڪرڻ ۽ ختم ڪرڻ جو ڪم انجام ڏئي سگهجي ٿو. ڊيڪ جي اها دلچسپ ملڪيت يا ته اسٽيڪ يا انهي کان قطار کي لاڳو ڪرڻ لاءِ استعمال ڪري سگهجي ٿي.
هيٺ ڏنل تصوير دي ديو کي ظاهر ڪري ٿي.

ڊييڪ استعمال ڪندي اسٽيڪ ۽ قطار لاڳو ڪريو

چتي

چتي هڪ آخري ان فرسٽ آئوٽ (LIFO) ڊيٽا جو structureانچو آهي ، يعني اهي عناصر ساڳئي پاسي کان پاپ ڪيا ويندا آهن ، جتي انهن کي ڌڪيو ويندو آهي. اچو ته اسٽيڪ کي ڊش ۽ پاپ آپريشن ڪرڻ لاءِ ڊيڪ جي اڳيان واري استعمال ڪريون.

پش (x)

اسٽيٽ ڏانهن هڪ عنصر ايڪس کي دٻائڻ لاءِ ، ڊيڪ جي اڳيان کان عنصر x شامل ڪريو.

وقت جي پيچيدگي = اي (1)

پاپ ()

پاپ آپريشن پُش جي ساڳئي پاسي ٿي آهي ، يعني اسٽيڪ مان هڪ عنصر پاپ ڪرڻ کي عنصر کي ڊيڪ جي سامهون واري پاسي کي ختم ڪريو ۽ ان کي واپس ڪريو.

وقت جي پيچيدگي = اي (1)

خالي آهي()

جيڪڏھن ديھ خالي آھي اسٽيڪ خالي آھي ٻئي صورت ۾ ناھي. تنهنڪري واپسي ديچ جي خالي آهي.

وقت جي پيچيدگي = اي (1)

سائيز ()

اسٽيڪ جي ماپ ديسي جي سائيز جيتري آهي ، تنهنڪري ڊيڪ جي ماپ کي موٽائي ڏيو.

وقت جي پيچيدگي = اي (1)

ڪوڊ

جاوا ڪوڊ ديق استعمال ڪندي اسٽيڪ کي لاڳو ڪرڻ لاءِ
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 ++ ڪوڊ
#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) ڊيٽا جو ،انچو ، ته اينڪيو ۽ نيڪيو آپريشن ٻئي طرف آهن. اچو ته ديکو جي سامهون واري انجڻ جي آپريشن لاءِ ۽ ديق جي پويان ڊي جي آپريشن جي لاءِ استعمال ڪريون.

انڪويو (ايڪس)

قطار ۾ هڪ عنصر ايڪس کي ترتيب ڏيڻ لاء ، صرف عنصر کي ڊيڪ جي اڳيان شامل ڪريو.

وقت جي پيچيدگي = اي (1)

ڊيوڪ ()

قطار مان هڪ عنصر کي ختم ڪرڻ لاءِ ، ڊييڪ جي پويان عنصر ڪ removeي ڇڏيو ۽ ان کي واپس ڪريو.

وقت جي پيچيدگي = اي (1)

خالي آهي()

هن پنگتي حيثيت رکي ٿو خالي آهي جيڪڏهن ديک خالي آهي ، ٻيو نه آهي. تنهنڪري واپسي ديچ جي خالي آهي.

وقت جي پيچيدگي = اي (1)

سائيز ()

قطار جي ڊيگهه ديسي جي سائز وانگر آهي ، تنهنڪري ڊيڪ جي ماپ کي واپس اچو.

وقت جي پيچيدگي = اي (1)

ڪوڊ

جاوا ڪوڊ ديق استعمال ڪندي قطار کي لاڳو ڪرڻ لاءِ
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
سي ++ ڪوڊ deque استعمال ڪندي قطار کي لاڳو ڪرڻ لاءِ
#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