Hàng đợi
Hàng đợi được triển khai dưới dạng FIFO nơi các thao tác chèn được thực hiện ở một đầu (phía sau) và việc xóa được thực hiện từ một đầu khác (phía trước). Phần tử đầu tiên đã nhập sẽ bị xóa trước.
Các hoạt động hàng đợi là -
EnQueue (int data) - Chèn ở phần cuối
int DeQueue () - Xóa khỏi giao diện người dùng
Đây là một chương trình C ++ để triển khai hàng đợi bằng cách sử dụng mảng.
Thuật toán
Begin function Enqueue() to insert elements in queue: If queue is completely filled up then print “Overflow”. Otherwise insert element at rear. Update the value of rear End Begin function Dequeue() to delete elements from queue: If queue is completely empty then print “Underflow”. Otherwise insert element from the front. Update the value of rear. End
Mã mẫu
#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) { //check if queue is empty or not 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() //display the queue { 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; }
Đầu ra
Queue is Empty 10 <-- 20 <-- 30 <-- after two node deletion 30 <-- Front Element is: 30