C++中的队列
时间:2020-02-23 14:30:02 来源:igfitidea点击:
介绍
今天,在本教程中,我们将讨论另一种数据结构,C++中的Queue。
什么是队列?
基本上,队列也是线性数据结构,在插入或者删除数据时遵循先进先出(FIFO)模式。
就模式而言,首先删除插入的第一个元素,最后删除进入队列的最后一个元素。
与堆栈不同,队列操作在两侧进行。
但是,请注意,一个操作应在一端执行,另一端应在另一端执行。
因此,插入和删除操作不会在同一侧进行。
C++中的队列工作
队列类似于现实世界中的队列。
它以先到先得的原则工作。
因此,如前所述,首先删除进入队列的第一个元素,并在所有先前成员都已被删除之后,删除最后一个输入的元素。
现在让我们看一下可以在队列上执行的基本操作,
- 入队
- 出队
- 节目
在下一节中,我们将详细介绍上述技术。
1.队列中的enqueue()
enqueue()将元素插入队列。
只需在队列末尾添加元素即可完成。
因此,我们可以推断,此操作将在最后执行。
排队算法如下:
Procedure ENQUEUE(VALUE) If REAR==Size_of_Stack Write OVERFLOW else REAR=REAR+1 QUEUE[REAR]=VALUE END IF END of Procedure
2.队列中的dequeue()
另一方面,dequeue()
删除并访问队列中存在的第一个元素。
请注意,此元素是在所有其他元素之前插入的元素,因此是第一个要出队的元素。
此出队操作发生在当前队列的前面。
因此,与执行入队的一侧相反。
出队算法如下:
Procedure DEQUEUE() If FRONT==-1 OR FRONT>REAR //If the queue is empty Write UNDERFLOW else FRONT=FRONT+1 RETURN QUEUE[FRONT-1] END IF END of Procedure
3.显示
表演基本上是一种操作,其中将队列的相应元素显示给用户或者换句话说,进行打印。
这使用户可以在任何时间点检查队列的当前状态。
展示算法如下:
Procedure DEQUEUE() If FRONT==-1 OR FRONT>REAR //If the queue is empty Write UNDERFLOW else Repeat While FRONT<=REAR PRINT QUEUE[FRONT] FRONT=FRONT+1 END IF END of Procedure
C++中队列的实现
现在让我们在C++中实现Queue的整个概念,这将使我们对它的工作有一个清晰的了解。
#include<iostream> using namespace std; #define max 10 int queue[max],front=-1,rear=-1; //queue declaration void enqueue(int num) //enqueue() inserts an element into the Queue { if(rear==max) //check if Queue is full { cout<<"OVERFLOW!"; } else if(front==-1 && rear==-1) //For 1st insertion in Queue { front++; rear++; queue[rear]=num; } else { rear++; queue[rear]=num; } } int dequeue() //dequeue() deletes out the 1st element from the Queue { if(front==-1 || front>rear) //check if Queue is empty { cout<<"UNDERFLOW!"; return -1; } else { cout<<"The deleted data is : "<<queue[front++]; //printing the deleted element return queue[front-1]; } } void show() { int i=front; if(front==-1 || front>rear) //if Queue is empty { cout<<"UNDERFLOW!"; } else { while(i<=rear) //printing the current Queue elements { cout<<"\t"<<queue[i]; i++; } cout<<endl; } } int main() { int ch,val; cout<<" :::MENU:::"; //Menu for Queue operations cout<<"\n1.enqueue\n2.dequeue\n3.Show\n4.Exit"; while(1) { printf("\nEnter the choice:"); scanf("%d",&ch); switch(ch) { case 1: cout<<"Enter the value to be pushed: "; cin>>val; enqueue(val); break; case 2: dequeue(); break; case 3: cout<<"Stack : "; show(); break; case 4: exit(0); default: printf("\nError! Invalid choice!..."); } } return 0; }
输出:
在C++输出中排队
了解代码,
- 首先,首先声明了两个变量front = -1和Rear = -1,以表示队列为空。
队列的大小存储在常量" max"中 - enqueue()–顾名思义,我们使用此函数执行入队操作。
它将传递的值添加到后面位置的队列中 dequeue()
–类似地用于从队列中删除或者访问前端元素。
此函数返回从队列中删除的第一个值- show()–此函数打印整个队列及其所有元素。
从前到后。
正如我们在堆栈教程中所看到的,重复检查顶部对于避免错误很重要。
同样在队列的情况下,我们需要检查给定队列是否已满或者为空,并分别打印OVERFLOW和UNDERFLOW错误。