mayashah Ответов: 1

Удаление определенных значений из очереди


Здравствуйте, В основном я пишу здесь небольшие вещи, и я реализую очередь с помощью связанного списка, и все находится на своем пике, но есть маленькая вещь, которую я не могу понять, а именно то, что я снимаю очередь, и она работает хорошо, но что, если я хочу, как я также предоставлю количество значений, которые будут удалены !! вот что я сделал !!

Что я уже пробовал:

#include<iostream>

#include<cstdlib>

using namespace std;

struct node{

    int info;

    struct node *next;

};

class Queue{

    private:

        node *rear;

        node *front;

    public:

        Queue();

        void enqueue();

        void dequeue();

        void display();

};

Queue::Queue(){

    rear = NULL;

    front = NULL;

}


void Queue::dequeue(){

    node *temp = new node;

    if(front == NULL){

        cout<<"\nQueue is Emtpty\n";

    }else{

        temp = front;

        front = front->next;

        cout<<"The data Dequeued is "<<temp->info;

        delete temp;

    }

}



int main(){

    Queue queue;


        queue.dequeue();


    return 0;

}

Richard MacCutchan

Что произойдет, если вы хотите удалить элемент, который не находится в начале очереди?

mayashah

возможно ли это ??

Richard MacCutchan

Да, конечно, это возможно. Вам просто нужно заново связать два элемента по обе стороны от того, который будет удален.

1 Ответов

Рейтинг:
11

Thomas Daniels

Если вы хотите удалить из очереди определенное количество значений, вы можете использовать цикл:

int count_to_dequeue = 3; // choose a number
while (count_to_dequeue > 0) {
    queue.dequeue();
    count_to_dequeue--;
}

Как это работает: сначала вы инициализируете переменную count_to_dequeue В приведенном примере это 3, чтобы удалить из очереди три значения. Затем идет цикл while. Это означает: "пока count_to_dequeue больше нуля, выполните код в блоке". В блоке значение снимается с очереди, а значение count_to_dequeue уменьшается на единицу.

Полный список всех шагов, которые происходят во время выполнения:

  1. значение count_to_dequeue равно 3.
  2. (ввод в цикл while)
  3. Значение удаляется из очереди.
  4. count_to_dequeue уменьшается - > его значение равно 2.
  5. Значение удаляется из очереди.
  6. count_to_dequeue уменьшается - > его значение равно 1.
  7. Значение удаляется из очереди.
  8. count_to_dequeue получает декремент - > его значение равно 0.
  9. (в то время как цикл существует: count_to_dequeue больше не больше нуля)


mayashah

это можно было бы сделать в главном, верно ??

Thomas Daniels

Да, может.

mayashah

Удивительно !! это сработало !! Спасибо

Thomas Daniels

Пожалуйста.