要求实现一个普通顺序队列。
当输入1 2 3 -1时,输出为1 2 3 。
当输入为1 2 3 4 5 6 7 8 9 10 11 -1时,输出为
queue is full!
1 2 3 4 5 6 7 8 9 10
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,以下是c和c++ 分别实现方式。
以下是 C 和 C++ 语言实现一个普通顺序队列的示例代码:
C 语言实现:
#include <stdio.h>
#define MAX_SIZE 10
int queue[MAX_SIZE];
int front = 0; // 队头指针
int rear = 0; // 队尾指针
// 判断队列是否为空
int is_empty() {
return front == rear;
}
// 判断队列是否已满
int is_full() {
return rear == MAX_SIZE;
}
// 入队
void enqueue(int x) {
if (is_full()) {
printf("queue is full!\n");
return;
}
queue[rear++] = x;
}
// 出队
int dequeue() {
if (is_empty()) {
printf("queue is empty!\n");
return -1;
}
return queue[front++];
}
// 打印队列中的元素
void print_queue() {
if (is_empty()) {
printf("queue is empty!\n");
return;
}
for (int i = front; i < rear; i++) {
printf("%d ", queue[i]);
}
printf("\n");
}
int main() {
int x;
while (1) {
scanf("%d", &x);
if (x == -1) {
break;
}
enqueue(x);
}
print_queue();
return 0;
}
C++ 语言实现:
#include <iostream>
#define MAX_SIZE 10
int queue[MAX_SIZE];
int front = 0; // 队头指针
int rear = 0; // 队尾指针
// 判断队列是否为空
bool is_empty() {
return front == rear;
}
// 判断队列是否已满
bool is_full() {
return rear == MAX_SIZE;
}
// 入队
void enqueue(int x) {
if (is_full()) {
std::cout << "queue is full!" << std::endl;
return;
}
queue[rear++] = x;
}
// 出队
int dequeue() {
if (is_empty()) {
std::cout << "queue is empty!" << std::endl;
return -1;
}
return queue[front++];
}
// 打印队列中的元素
void print_queue() {
if (is_empty()) {
std::cout << "queue is empty!" << std::endl;
return;
}
for (int i = front; i < rear; i++) {
std::cout << queue[i] << " ";
}
std::cout << std::endl;
}
int main() {
int x;
while (1) {
std::cin >> x;
if (x == -1) {
break;
}
enqueue(x);
}
print_queue();
return 0;
}
以上代码实现了一个基本的顺序队列,包括判断队列是否为空、判断队列是否已满、入队、出队和打印队列中的元素等基本操作。当队列已满时,会输出"queue is full!",当队列为空时,会输出"queue is empty!"。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢