#define _CRT_SECURE_NO_WARNINGS 1
#pragma once
#include<stdio.h>
typedef int QDataType;
typedef struct QNode {
QDataType data;
struct QNode *pNext;
} QNode;
typedef struct Queue {
QNode *pFront;
QNode *pRear;
int size;
} Queue;
QNode* Create(QDataType data);
void QueueInit(Queue *pQueue);
void QueuePush(Queue *pQueue, QDataType data);
void QueuePop(Queue *pQueue);
QDataType QueueFront(Queue *pQueue);
int QueueIsEmpty(Queue *pQueue);
int QueueSize(Queue *pQueue);
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include"queue.h"
QNode* Create(QDataType data)
{
QNode *p = NULL;
p = (QNode*)malloc(sizeof(QNode));
p->data = data;
p->pNext = NULL;
return p;
}
void QueueInit(Queue *pQueue)
{
if (pQueue == NULL)
{
return;
}
pQueue->pFront = NULL;
pQueue->pRear = NULL;
pQueue->size = 0;
}
void QueuePush(Queue *pQueue, QDataType data)
{
if (pQueue == NULL)
{
return;
}
QNode *NewNode = Create(data);
if (pQueue->pFront == NULL && pQueue->pRear == NULL)
{
pQueue->pFront = NewNode;
pQueue->pRear = NewNode;
pQueue->size++;
return;
}
pQueue->pRear->pNext = NewNode;
pQueue->pRear = NewNode;
pQueue->size++;
}
void QueuePop(Queue *pQueue)
{
if (pQueue == NULL)
{
return;
}
if (pQueue->pFront == NULL && pQueue->pRear == NULL)
{
printf("队列为空\n");
return;
}
if (pQueue->pFront == pQueue->pRear)
{
QNode *p = pQueue->pFront;
pQueue->pFront = NULL;
pQueue->pRear = NULL;
pQueue->size--;
free(p);
p = NULL;
return;
}
Queue *q = pQueue->pFront;
pQueue->pFront = pQueue->pFront->pNext;
pQueue->size--;
free(q);
q = NULL;
}
QDataType QueueFront(Queue *pQueue)
{
if (pQueue == NULL)
{
return;
}
if (pQueue->pFront == NULL)
{
printf("队列为空\n");
return;
}
return pQueue->pFront->data;
}
int QueueIsEmpty(Queue *pQueue)
{
if (pQueue == NULL)
{
return;
}
if (pQueue->size == 0)
{
return 1;
}
return 0;
}
int QueueSize(Queue *pQueue)
{
if (pQueue == NULL)
{
return;
}
return pQueue->size;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include"queue.h"
#define FUNHEAD printf("\n====================%s===================\n",__FUNCTION__);
void TestPush()
{
FUNHEAD;
Queue queue;
QueueInit(&queue);
QueuePush(&queue, 1);
QueuePush(&queue, 2);
QueuePush(&queue, 3);
QueuePush(&queue, 4);
QueuePush(&queue, 5);
QDataType ret = QueueFront(&queue);
printf("%d\n", ret);
}
void TestPop()
{
FUNHEAD;
Queue queue;
QueueInit(&queue);
QueuePush(&queue, 1);
QueuePush(&queue, 2);
QueuePush(&queue, 3);
QueuePush(&queue, 4);
QueuePush(&queue, 5);
QDataType ret = QueueFront(&queue);
printf("%d\n", ret);
QueuePop(&queue);
ret = QueueFront(&queue);
printf("%d\n", ret);
}
void TestFront()
{
FUNHEAD;
Queue queue;
QueueInit(&queue);
QueuePush(&queue, 1);
QueuePush(&queue, 2);
QueuePush(&queue, 3);
QueuePush(&queue, 4);
QDataType ret = QueueFront(&queue);
printf("%d\n", ret);
}
void TestEmpty()
{
FUNHEAD;
Queue queue;
QueueInit(&queue);
QueuePush(&queue, 1);
QueuePush(&queue, 2);
int ret = QueueIsEmpty(&queue);
if (ret == 1)
{
printf("队列为空\n");
}
else {
printf("队列不为空\n");
}
}
void TestSize()
{
FUNHEAD;
Queue queue;
QueueInit(&queue);
QueuePush(&queue, 1);
QueuePush(&queue, 2);
QueuePush(&queue, 3);
QueuePush(&queue, 4);
printf("size = %d\n", QueueSize(&queue));
}
int main()
{
TestPush();
TestPop();
TestFront();
TestEmpty();
TestSize();
system("pause");
return 0;
}