编写一个程序实现链队列的各种基本运算,并在此基础上设计一个主程序,完成如下功能: 初始化链队列;入队;出队;判断队列是否为空。(c++注释)
时间: 2024-03-04 20:48:46 浏览: 55
以下是链队列的基本运算实现,包括初始化、入队、出队和判断队列是否为空:
```cpp
#include <iostream>
using namespace std;
// 链队列结点结构体
struct Node {
int data;
Node* next;
};
// 链队列结构体
struct Queue {
Node* front; // 队头指针
Node* rear; // 队尾指针
};
// 初始化链队列
void InitQueue(Queue& q) {
q.front = q.rear = new Node;
q.front->next = nullptr;
}
// 入队
void EnQueue(Queue& q, int data) {
Node* p = new Node;
p->data = data;
p->next = nullptr;
q.rear->next = p;
q.rear = p;
}
// 出队
bool DeQueue(Queue& q, int& data) {
if (q.front == q.rear) {
return false;
}
Node* p = q.front->next;
data = p->data;
q.front->next = p->next;
if (q.rear == p) {
q.rear = q.front; // 删除最后一个结点时,更新队尾指针
}
delete p;
return true;
}
// 判断队列是否为空
bool IsEmpty(Queue& q) {
return q.front == q.rear;
}
int main() {
Queue q;
InitQueue(q);
int n, data;
cout << "请输入入队元素个数:";
cin >> n;
for (int i = 0; i < n; i++) {
cout << "请输入第" << i + 1 << "个元素:";
cin >> data;
EnQueue(q, data);
}
cout << "出队元素为:";
while (!IsEmpty(q)) {
DeQueue(q, data);
cout << data << " ";
}
cout << endl;
return 0;
}
```
在主程序中,我们先初始化一个链队列,然后通过循环输入若干个元素,并依次入队。最后,我们循环出队所有元素,并输出它们的值。
阅读全文