#include <stdlib.h> #include <string> #include <iostream> using namespace std; class nodes { //objet node public : nodes() { next = NULL; } int element; //element dans la node nodes* next; //prochain element }*front = NULL, *rear=NULL, *n, *temp, *temp1; //initialisation des variables class circularqueue { //objet de la queue circulaire public : //Fonctions des queues circulaire void InsertQueue(); void Delete(); void SearchQueue(); void DisplayQueue(); }; //Fonction delete des queues circulaires void circularqueue::Delete() { int x; // element à enlever temp = front; // temp devient la position de front if (front == NULL) { //Si pas de front (empty) cout << "The queue is empty" << endl; } else { if (front == rear) {//si positon de front est la meme que rear (un seul element) x = front->element; //x devient la valeur de front delete(temp); //enleve l'élément qui est à la position de temp(front) front = NULL; //Remet front à null rear = NULL;// remet rear à null } else { x = temp->element; //x devient la valeur de front (temp == front) front = front->next; //front devient le prochain élément rear->next = front; //la position de rear devient la position du prochain de front (rear devient l'ancien front) delete(temp); //eneleve l'élement temporaire } cout << "Element " << x << " has been deleted" << endl; } } void circularqueue::InsertQueue() { n = new nodes[sizeof(nodes)]; //crée un nouvel objet node cout << "Enter the element you wish to insert: "; cin >> n->element; //entrer l'élément de la nouvelle node if (front == NULL) { //si front est null front = n; //emplacement de front est maintenant la valeur entrée } else { rear->next = n; //position de rear devient le prochain } rear = n; //l'emplacement rear devient la valeur entrée rear->next = front; //position rear devient le prochain } void circularqueue::SearchQueue(){ int search; // Valeur a chercher dans la queue int n = 0; //Compteur temp = front; // Valeur temporaire est à front; temp1 = NULL; // Autre valeur temp. est nulle if (front == NULL) { //Si front na pas d'élément cout << "The queue is empty..." << endl; } else { cout << "Enter the element you are searching for: "; cin >> search; //Enter l'élément à trouver while (temp != temp1) { //Fait pendant que la valeur temp != front if (search == temp->element) { //si le search est egal à l'élément de la node n++; //ajoute au compteur temp = temp->next; //change la valeur du front pour la prochaine valeur temp1 = front; //Deuxieme temporaire devient la valeur front } } cout << "The element " << search << " is in the queue " << n << " times." << endl; } return ; } void circularqueue::DisplayQueue() { temp = front; //temp devient la position de front temp1 = NULL; //deuxieme temp est NULL if (front == NULL) { //si la front est vide cout << " The queue is empty..." << endl; } else { //si c'est pas vide cout << "The elements in the queue are: "; while (temp != temp1) { //pendant que temp n'est pas temp1 (le tour de la queue n'est pas complétée) cout << temp->element << " "; temp = temp->next; //temp devient la prochaine position temp1 = front; //temp 1 devient le front } } } void OptionList() { cout << "1: Insert in the queue." << endl; cout << "2: Delete from the queue." << endl; cout << "3: Search the queue." << endl; cout << "4: Display the queue." << endl; } int main() { int opt; //option choisie bool whileTrue = true; //bool qui est toujours true pour options circularqueue Queue; //crée une nouvel object de circular queue //choisir un option while (whileTrue) { OptionList(); cout << "Enter your desired option: "; cin >> opt; switch (opt) { case 1: Queue.InsertQueue(); break; case 2: Queue.Delete(); break; case 3:Queue.SearchQueue(); break; case 4: Queue.DisplayQueue(); break; } } }
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter