队列的基本操作:
DQueue.h"
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
typedef int QDataType;
typedef struct QNode
{
QDataType data;
struct QNode *next;
} QNode;
typedef struct Queue
{
QNode *front;
QNode *rear;
} Queue;
void QueueInit(Queue *pQueue);//初始化
static QNode * CreateNode(QDataType data);//创建节点
void QueuePush(Queue *pQueue, QDataType data);//入队
void QueuePop(Queue *pQueue);//出队
QDataType QueueFront(Queue *pQueue);//查看队首元素
int QueueSize(const Queue *pQueue);//元素个数
DQueue.c
#include"DQueue.h"
void QueueInit(Queue *pQueue)//初始化
{
pQueue->front = pQueue->rear = NULL;
}
static QNode * CreateNode(QDataType data)//创建节点
{
QNode *node= (QNode *)malloc(sizeof(QNode));
node->data = data;
node->next = NULL;
return node;
}
void QueuePush(Queue *pQueue, QDataType data)//入队
{
QNode * node=CreateNode(data);
if (pQueue->front == NULL)
{
pQueue->front = pQueue->rear = node;
}
pQueue->rear->next = node;
pQueue->rear = node;
}
void QueuePop(Queue *pQueue)//出队
{
if (pQueue->front == NULL)
{
pQueue->rear = NULL;
}
QNode * cur = pQueue->front;
pQueue->front = cur->next;
free(cur);
}
QDataType QueueFront(Queue *pQueue)//查看队首元素
{
return pQueue->front->data;
}
int QueueSize(const Queue *pQueue)//元素个数
{
QNode *cur=pQueue->front ;
int count = 0;
while (cur )
{
count++;
cur = cur->next;
}
return count;
}
main.c
#define _CRT_SECURE_NO_WARNINGS
#include<Windows.h>
#include"DQueue.h"//队列
//队列基本操作
void DuiLie()
{
Queue pQueue;
QueueInit(&pQueue);//初始化
QueuePush(&pQueue, 1);//入队
QDataType a= QueueFront(&pQueue);//查看队首元素
printf("%d ", a);
QueuePush(&pQueue, 2);//入队
a = QueueFront(&pQueue);//查看队首元素
printf("%d ", a);
QueuePush(&pQueue, 3);//入队
a = QueueFront(&pQueue);//查看队首元素
printf("%d\n", a);
int b= QueueSize(&pQueue);//元素个数
printf("%d ", b);
QueuePop(&pQueue);//出队
b = QueueSize(&pQueue);//元素个数
printf("%d ", b);
}
int main()
{
DuiLie();
system("pause");
return 0;
}
评论区