被实现为FIFO的队列,其中插入是在一端(后部)完成,而删除是在另一端(前部)完成。输入的第一个元素首先被删除。
队列操作是-
EnQueue (int data)-在后端插入
int DeQueue()-删除从前端
这是一个使用数组实现队列的C ++程序。
Begin 函数 Enqueue ()插入队列中的元素: 如果队列已满,则打印“ Overflow”。 否则在后面插入元素。 更新后方的价值 End Begin 函数Dequeue()从队列中删除元素: 如果队列完全为空,则打印“下溢”。 否则从前面插入元素。 更新rear的值。 End
#include <bits/stdc++.h> using namespace std; struct Q { int f, r, capacity; int* q; Q(int c) { f = r= 0; capacity = c; q = new int; } ~Q() { delete[] q; } void Enqueue(int d) { if (capacity == r) { //检查队列是否为空 printf("\nQueue is full\n"); return; } else { q[r] = d; //insert data r++; //update rear } return; } void Dequeue() { if (f == r) { printf("\nQueue is empty\n"); return; } else { for (int i = 0; i < r - 1; i++) { q[i] = q[i + 1]; } r--; //update rear } return; } //显示队列 void Display(){ int i; if (f == r) { printf("\nQueue is Empty\n"); return; } for (i = f; i < r; i++) { printf(" %d <-- ", q[i]); } return; } void Front() { if (f == r) { printf("\nQueue is Empty\n"); return; } printf("\nFront Element is: %d", q[f]); //print front element of queue return; } }; int main(void) { Q qu(3); qu.Display(); cout<<"after inserting elements"<<endl; qu.Enqueue(10); qu.Enqueue(20); qu.Enqueue(30); qu.Display(); qu.Dequeue(); qu.Dequeue(); printf("\n\nafter two node deletion\n\n"); qu.Display(); qu.Front(); return 0; }
输出结果
Queue is Empty 10 <-- 20 <-- 30 <-- after two node deletion 30 <-- Front Element is: 30