目录
- 1. 讲解:
- 2. C++代码实现:
- 小结:
1. 讲解:
2. C++代码实现:
#include <stdlib.h>
#include <iostream>
using namespace std;
#define ElemType int
typedef struct LinkNode{
ElemType data;
struct LinkNode* next;
}LinkNode;
typedef struct {
LinkNode* front, * rear;
}LinkQueue;
// 初始化
void InitQueue(LinkQueue& Q) {
Q.front = Q.rear = (LinkNode*)malloc(sizeof(LinkNode));
Q.front->next = NULL;
}
// 判断是否为空
bool IsEmpty(LinkQueue Q) {
if (Q.front == Q.rear) return true;
else return false;
}
// 入队
bool EnQueue(LinkQueue& Q, ElemType e) {
LinkNode* s = (LinkNode*)malloc(sizeof(LinkNode));
if (s == NULL) return false;
s->data = e;
s->next = NULL;
Q.rear->next = s;
Q.rear = s;
}
// 出队
bool DeQueue(LinkQueue& Q, ElemType& e) {
if (IsEmpty(Q)) return false; // 空队
LinkNode* s = Q.front->next;
Q.front->next = s->next;
e = s->data;
if (s == Q.rear) { // 最后一个元素出队时
Q.rear = Q.front;
}
free(s);
return true;
}
int main() {
LinkQueue Q;
InitQueue(Q); // 初始化队列
// 入队操作
for (int i = 1; i <= 5; ++i) {
EnQueue(Q, i * 10);
cout << "入队元素:" << i * 10 << endl;
}
// 出队操作
ElemType e;
while (!IsEmpty(Q)) {
DeQueue(Q, e);
cout << "出队元素:" << e << endl;
}
return 0;
}