Deque колдонуп Stack жана Кезекти ишке ашыруу


Кыйынчылык деңгээли жеңил
Көп суралган динчилдер GE Саламаттыкты сактоо MAQ Myntra Qualcomm
Dequeue кезек чөмөлө

Маселени билдирүү

"Деканы колдонуп, Стек жана Кезекти ишке ашыруу" көйгөйүндө Деканы колдонуп, Стек жана Кезекти ишке ашыруу алгоритмин жазуу (эки эселенген кезек) жазылган.

Мисал (Stack)

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

 

Algorithm

A deque(Эки Чектүү Кезек) - кезек киргизүүнүн жана өчүрүүнүн эки учунда тең аткарыла турган кезектин өзгөчө түрү. Декенин бул кызыктуу касиети стекти же андан кезекти ишке ашыруу үчүн колдонулушу мүмкүн.
Төмөндөгү сүрөттө Deque,

Deque колдонуп Stack жана Кезекти ишке ашыруу

чөмөлө

чөмөлө бул Last In First Out (LIFO) маалымат структурасы, башкача айтканда, элементтер түртүлө турган жерден чыгарылат. Стек үчүн түртүү жана поп операциясын жүргүзүү үчүн Dequeдин алдыңкы бөлүгүн колдонолу.

Түртүү (x)

Х элементин стекке түртүү үчүн, Dequeнин алдыңкы бөлүгүнө x элементин кошуңуз.

Убакыт татаалдыгы = O (1)

Поп ()

Поп операциясы Push менен бир эле учурда болот, башкача айтканда, стекден элементти чыгарып, деканын алдындагы элементти жок кылып, аны кайтарып берет.

Убакыт татаалдыгы = O (1)

бош()

Эгерде Deque бош болсо, анда стек бош болсо, анда ал жок болот. Ошентип, Декенин бош болгонун кайтарып бериңиз.

Убакыт татаалдыгы = O (1)

size ()

Стектин көлөмү Декенин өлчөмү менен бирдей, ошондуктан декенин көлөмүн кайтарып бериңиз.

Убакыт татаалдыгы = O (1)

коду

Деканы колдонуп стекти ишке ашыруу үчүн JAVA коду
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
Deque колдонуп стекти ишке ашыруу үчүн 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) маалыматтардын структурасы, ал энкюк жана декуекация иштери эки тарапта тең аткарылат. Dequeue иштеши үчүн Deque алдыңкы бөлүгүн, Dequeue иштеши үчүн Deque арткысын колдонолу.

Enqueue (x)

Кезектеги x элементин тизмеге киргизүү үчүн, Dequeнин алдыңкы бөлүгүнө элементти кошуңуз.

Убакыт татаалдыгы = O (1)

Dequeue ()

Кезектеги элементти декуациялоо үчүн, Декенин арткы тарабындагы элементти алып салып, кайра кайтарыңыз.

Убакыт татаалдыгы = O (1)

бош()

The кезек Дека бош болсо, бош эмес, бош эмес. Ошентип, Декенин бош болгонун кайтарып бериңиз.

Убакыт татаалдыгы = O (1)

size ()

Кезектин көлөмү Декенин өлчөмү менен бирдей, ошондуктан декенин көлөмүн кайтарып бериңиз.

Убакыт татаалдыгы = O (1)

коду

Deque колдонуп кезекти ишке ашыруу үчүн JAVA коду
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 колдонуп кезекти ишке ашыруу үчүн C ++ коду
#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