头文件
#ifndef _QUEUE_H_
#define _QUEUE_H_
#define SIZE 10
typedef enum {FALSE = 0 , TRUE} BOOL;
typedef int Data;
typedef struct _node
{
Data data;
struct _node *next;
}Node;
typedef struct queue
{
Node *front; //队头指针
Node *rear; //队尾指针
}Queue;
//初始化队列
void Init(Queue *q);
//入队列
void Push(Queue *q , Data data);
//出队列
void Pop(Queue *q);
//判断空队列
BOOL Empty(Queue *q);
//获取队头元素
Data GetTop(Queue *q);
#endif // _QUEUE_H_
功能函数
#include "Queue.h"
#include <stdlib.h>
#include <stdio.h>
//初始化队列
void Init(Queue *q)
{
if (NULL == q)
return;
q->front = NULL;
q->rear = NULL;
}
//判断空队列
BOOL Empty(Queue *q)
{
if (NULL == q)
return FALSE;
if(q->front == NULL)
return TRUE;
return FALSE;
}
//入队列
void Push(Queue *q , Data data)
{
if (NULL == q)
return ;
Node *node = (Node *)malloc(sizeof(Node)/sizeof(char));
if (node == NULL)
return;
node->data = data;
node->next = NULL;
if (q->rear != NULL) //不为空时
{
q->rear->next = node;
q->rear = node;
}
else //空队列时
{
q->rear = node;
q->front = node;
}
}
//出队列
void Pop(Queue *q)
{
if (NULL == q)
return ;
if(Empty(q) == TRUE)
return ;
Node *p = q->front;
q->front = p->next;
free (p);
if (q->front == NULL)
q->rear == NULL;
}
//获取队头元素
Data GetTop(Queue *q)
{
if (NULL == q)
return;
if(Empty(q) == TRUE)
exit(-1);
return q->front->data;
}