Hàng đợi (Queue) tuân theo cơ chế FIFO. Triển khai bằng mảng tĩnh kích thước cố định.
Ví dụ
#include <iostream>
using namespace std;
int queue[100], n = 100, front = -1, rear = -1;
void Insert() {
int val;
if (rear == n - 1)
cout << "Queue Overflow" << endl;
else {
if (front == -1)
front = 0;
cout << "Insert the element in queue: " << endl;
cin >> val;
rear++;
queue[rear] = val;
}
}
void Delete() {
if (front == -1 || front > rear) {
cout << "Queue Underflow";
return;
} else {
cout << "Element deleted from queue is: " << queue[front] << endl;
front++;
}
}
void Display() {
if (front == -1)
cout << "Queue is empty" << endl;
else {
cout << "Queue elements are: ";
for (int i = front; i <= rear; i++)
cout << queue[i] << " ";
cout << endl;
}
}
int main() {
int ch;
cout << "1) Insert element to queue" << endl;
cout << "2) Delete element from queue" << endl;
cout << "3) Display all the elements of queue" << endl;
cout << "4) Exit" << endl;
do {
cout << "Enter your choice: " << endl;
cin >> ch;
switch (ch) {
case 1: Insert(); break;
case 2: Delete(); break;
case 3: Display(); break;
case 4: cout << "Exit" << endl; break;
default: cout << "Invalid choice" << endl;
}
} while(ch != 4);
return 0;
}
Kết quả
1) Insert element to queue 2) Delete element from queue 3) Display all the elements of queue 4) Exit Enter your choice: 1 Insert the element in queue: 4 Enter your choice: 1 Insert the element in queue: 3 Enter your choice: 1 Insert the element in queue: 5 Enter your choice: 2 Element deleted from queue is: 4 Enter your choice: 3 Queue elements are: 3 5 Enter your choice: 7 Invalid choice Enter your choice: 4 Exit
Hàm Insert()
Kiểm tra tràn (rear == n-1). Nếu front == -1 thì đặt front = 0. Tăng rear và gán giá trị.
void Insert() {
int val;
if (rear == n - 1)
cout << "Queue Overflow" << endl;
else {
if (front == -1)
front = 0;
cout << "Insert the element in queue: " << endl;
cin >> val;
rear++;
queue[rear] = val;
}
}
Hàm Delete()
Kiểm tra rỗng (front == -1 hoặc front > rear). In phần tử front và tăng front.
void Delete() {
if (front == -1 || front > rear) {
cout << "Queue Underflow";
return;
} else {
cout << "Element deleted from queue is: " << queue[front] << endl;
front++;
}
}
Hàm Display()
Duyệt từ front đến rear bằng vòng lặp for.
void Display() {
if (front == -1)
cout << "Queue is empty" << endl;
else {
cout << "Queue elements are: ";
for (int i = front; i <= rear; i++)
cout << queue[i] << " ";
cout << endl;
}
}
Hàm main()
int main() {
int ch;
cout << "1) Insert element to queue" << endl;
cout << "2) Delete element from queue" << endl;
cout << "3) Display all the elements of queue" << endl;
cout << "4) Exit" << endl;
do {
cout << "Enter your choice: " << endl;
cin >> ch;
switch (ch) {
case 1: Insert(); break;
case 2: Delete(); break;
case 3: Display(); break;
case 4: cout << "Exit" << endl; break;
default: cout << "Invalid choice" << endl;
}
} while(ch != 4);
return 0;
}