请用dev c++完成以下题目: 基于循环队列或链队列,实现队列的各种基本运算,并在此基础上设计一个主程序完成如下功能:(1)将一组整数加入队列。(2)打印队列的所有元素。(3)将其中若干元素出队并打印出队的元素。(4)打印队列剩余的元素。
时间: 2024-11-12 14:36:41 浏览: 27
在Dev C++中实现队列的基本运算,我们可以选择使用数组作为循环队列(Circular Queue),或者使用结构体作为链式队列(Linked Queue)。这里是一个简单的循环队列实现的示例:
```c++
#include <iostream>
using namespace std;
#define MAX_SIZE 100
struct Node {
int data;
struct Node* next;
};
// 初始化队列为空
void initializeQueue(Node** queue) {
*queue = NULL;
}
// 插入元素到队尾
void enqueue(Node** queue, int value) {
if (*queue == NULL) {
Node* newNode = new Node();
newNode->data = value;
newNode->next = newNode; // 循环队列
*queue = newNode;
} else {
Node* tail = *queue;
tail->next = new Node();
tail->next->data = value;
tail = tail->next; // 更新尾部指针
tail->next = *queue; // 形成循环
}
}
// 删除并返回队首元素
int dequeue(Node** queue) {
if (*queue == NULL) {
cout << "Queue is empty!" << endl;
return -1;
}
int removedValue = (*queue)->data;
Node* temp = *queue;
*queue = (*queue)->next;
delete temp; // 释放内存
return removedValue;
}
// 打印队列内容
void printQueue(Node* queue) {
if (queue == NULL) {
cout << "Queue is empty!" << endl;
} else {
Node* temp = queue;
while (temp != queue->next) { // 遍历循环队列
cout << temp->data << " ";
temp = temp->next;
}
cout << endl;
}
}
int main() {
Node* queue = NULL;
initializeQueue(&queue);
// 加入整数到队列
int numbers[] = {1, 2, 3, 4, 5};
for (int i = 0; i < sizeof(numbers)/sizeof(numbers[0]); ++i)
enqueue(&queue, numbers[i]);
// 打印队列所有元素
printQueue(queue);
// 出队并打印元素
for (int i = 0; i < 3; ++i) {
int removedNum = dequeue(&queue);
if (removedNum != -1)
cout << "Removed: " << removedNum << endl;
}
// 再次打印队列剩余的元素
printQueue(queue);
return 0;
}
```
这个示例展示了如何使用循环队列在Dev C++中实现队列的基本操作。你可以根据需要调整代码以满足题目的其他要求。
阅读全文