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错误。

