#include <stdio.h>
#include <tchar.h>
#include <stdlib.h>
#define MaxQueueSize 100
// TODO: 在此处引用程序需要的其他头文件
struct Node{
int data;
Node* next;
};
struct Queue{
Node* front;
Node* rear;
};
//初始化队列
bool Init_Queue(Queue* q){
q->front = q->rear = (Node*)malloc(MaxQueueSize*sizeof(Node));
if (!q->front) return false;
q->front->next = NULL;
return true;
}
//清空队列
bool Clear_Queue(Queue* q){
q->front = q->rear;
return true;
}
//销毁队列
bool Destroy_Queue(Queue* q){
Node* temp = q->front;
while (q->front != q->rear){
temp = q->front->next;
free(q->front);
q->front = temp;
}
q->front = q->rear = NULL;
return true;
}
//入队
bool EnQueue(Queue* q, int value){
Node* n = (Node*)malloc(sizeof(Node));
n->next = NULL;
n->data = value;
q->rear->next = n;
q->rear = n;
return true;
}
//出队,返回队头元素的值
int DeQueue(Queue* q){
int temp;
if (q->front == q->rear) exit(-1);
Node* p = q->front;
temp = p->next->data;
q->front = p->next;
if (p == q->rear) q->front = q->rear;
free(p);
p = NULL;
return temp;
}
//打印队列
void Print_Queue(Queue q){
if (q.front == q.rear) printf("空队列\n");
while (q.front != q.rear){
printf("%d\n", DeQueue(&q));
}
}