#include <iostream>
using namespace std;
typedef struct QNode {
int data;
struct QNode *next;
}QNode, *QueuePtr;
typedef struct {
QueuePtr front;
QueuePtr rear;
}LinkQueue;
// 初始化
bool initQueue(LinkQueue &Q) {
Q.front = Q.rear = new QNode;
Q.rear->next = NULL;
return true;
}
// 入队
bool enQueue(LinkQueue &Q, int e) {
QueuePtr p = new QNode;
p->data = e;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
return true;
}
// 出队
bool deQueue(LinkQueue &Q, int &e) {
if (Q.front == Q.rear) {
return false;
}
QueuePtr p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if (p == Q.rear) {
Q.rear = Q.front;
}
return true;
}
// 队头元素
int getHead(LinkQueue Q) {
if (Q.front != Q.rear) {
return Q.front->next->data;
}
return -1;
}
int main() {
LinkQueue Q;
initQueue(Q);
for (int i = 1; i <= 5; ++i) {
enQueue(Q, i);
cout << "队头元素:" << getHead(Q) << endl;
}
for (int i = 1; i <= 5; ++i) {
cout << "队头元素:" << getHead(Q);
int e;
deQueue(Q, e);
cout << "出队元素:" << e << endl;
}
return 0;
}
[数据结构]--链队的实现
最新推荐文章于 2023-03-29 20:18:00 发布