/******************************************************************
Project:动态队列
Author:Rise
*******************************************************************/
#ifdef _DEBUG
#include<vld.h>
#endif /*_DEBUG*/
#include<malloc.h>
#include<stdio.h>
typedef struct queue_node
{
int data;
struct queue_node* next;
}QNode;
typedef struct _queue
{
QNode* front;
QNode* rear;
size_t m_size;
}Queue;
//入队 //尾入
void EnQueue(Queue* q,int data)
{
QNode* pnew = (QNode*)malloc(sizeof(QNode));
pnew->data = data;
pnew->next = nullptr;
if (q->m_size == 0)
{
q->rear = pnew;
q->front = q->rear;
q->m_size++;
}
else
{
q->rear->next = pnew;
q->rear = pnew;
q->m_size++;
}
}
//出队 //头出
void DeQueue(Queue* q, int& data)
{
if (q == nullptr || q->m_size == 0)
return;
data = q->front->data;
QNode* tmp = q->front;
q->front = q->front->next;
free(tmp);
q->m_size--;
}
int main()
{
int data = 0;
Queue q;
q.m_size = 0;
EnQueue(&q, 10);
EnQueue(&q, 20);
EnQueue(&q, 30);
EnQueue(&q, 40);
DeQueue(&q, data);
printf("Queue Surplus Size:%d\nNode Data:%d\n", q.m_size, data);
DeQueue(&q, data);
printf("Queue Surplus Size:%d\nNode Data:%d\n", q.m_size, data);
DeQueue(&q, data);
printf("Queue Surplus Size:%d\nNode Data:%d\n", q.m_size, data);
DeQueue(&q, data);
printf("Queue Surplus Size:%d\nNode Data:%d\n", q.m_size, data);
return 0;
}