#include<stdio.h>
#include<malloc.h>
typedef struct QNode {
int data;
struct QNode* next;
}*QueuePtr;
typedef struct {
QueuePtr front;
QueuePtr rear;
}LinkQueue;
void InitQueue(LinkQueue& Q) {
Q.front = (QueuePtr)malloc(sizeof(QNode));
if (!Q.front) {
return;
}
Q.front->data = 0;
Q.rear = Q.front;
Q.front->next = NULL;
}
void EnQueue(LinkQueue& Q, int data) {//队尾入队列
QNode* P;
P = (QueuePtr)malloc(sizeof(QNode));
if (!P) {
return;
}
P->next = NULL;
P->data = data;
Q.rear->next = P;
Q.rear = P;
}
void DeQueue(LinkQueue& Q, int& data) {
if (Q.front == Q.rear) {
return; // 队列为空,无法出队
}
QueuePtr p = Q.front->next;
data = p->data;
Q.front->next = p->next;
if (Q.rear == p) { // 如果出队后队列为空
Q.rear = Q.front; // 需要将 rear 指向头结点
}
free(p);
}
void print(LinkQueue Q) {
QNode* P = Q.front->next;
while (P != NULL) {
printf("%d\n", P->data);
P = P->next;
}
printf("---------------------\n");
}
int main() {
LinkQueue Q;
int a;
InitQueue(Q);
for (int i = 1; i <= 10; i++) {
EnQueue(Q, i);
}
print(Q);
DeQueue(Q, a);
print(Q);
for (int i = 0; i <= 3; i++) {
DeQueue(Q, a);
}
print(Q);
}
链队列的入队出队
最新推荐文章于 2024-10-17 11:39:06 发布