1、队列.h
#include<stdio.h>
#include<stdlib.h>
#define N 100 //定义队列最大多少个
#define datatype char //定义队列的数据类型
struct queue
{
datatype data[N];//保存数据的数组
int front; //数据的开头
int rear; //数据的结尾
};
typedef struct queue Q; //给已经有的类型简化一下
void init(Q *myqueue); //初始化结构体
int isempty(Q *myqueue); //判断是否为空,1为空,0不为空
void enQueue(Q *myqueue,datatype num); //入队
datatype DeQueue(Q *myqueue);//出队
void printfQ(Q *myqueue); //打印队列所有的元素
datatype gethead(Q *myqueue);//获取开头的一个节点
2、队列.c
#include "队列.h"
void init(Q *myqueue)
{
myqueue->front = myqueue->rear = 0;
}
int isempty(Q *myqueue)
{
if (myqueue->front==myqueue->rear)
{
return 1;
}
else
{
return 0;
}
}
void enQueue(Q *myqueue, datatype num)
{
if (myqueue->rear == N)
{
printf("失败");
return -1;
}
else
{
myqueue->data[myqueue->rear] = num;//赋值
myqueue->rear += 1;//增加一个
}
}
datatype DeQueue(Q *myqueue)
{
if (myqueue->front==myqueue->rear)
{
printf("失败");
return -1;
}
else
{
myqueue->front += 1;
return myqueue->data[myqueue->front-1];
}
}
void printfQ(Q *myqueue) //打印队列所有的元素
{
printf("\n");
if (myqueue->front==myqueue->rear)
{
printf("为空");
}
else
{
for (int i = myqueue->front; i < myqueue->rear; i++)
{
printf("%6c",myqueue->data[i]);
}
}
}
datatype gethead(Q *myqueue)
{
if (myqueue->front == myqueue->rear)
{
printf("为空");
return -1;
}
else
{
return myqueue->data[myqueue->front];
}
}
3、main.c
#include<stdio.h>
#include<stdlib.h>
#include "队列.h"
void main()
{
Q Q1;//创建
init(&Q1);
enQueue(&Q1, 'A');
printfQ(&Q1);
enQueue(&Q1, 'B');
printfQ(&Q1);
enQueue(&Q1, 'C');
printfQ(&Q1);
enQueue(&Q1, 'D');
printfQ(&Q1);
enQueue(&Q1, 'E');
printfQ(&Q1);
DeQueue(&Q1);
printfQ(&Q1);
DeQueue(&Q1);
printfQ(&Q1);
DeQueue(&Q1);
printfQ(&Q1);
DeQueue(&Q1);
printfQ(&Q1);
DeQueue(&Q1);
printfQ(&Q1);
DeQueue(&Q1);
printfQ(&Q1);
DeQueue(&Q1);
printfQ(&Q1);
DeQueue(&Q1);
printfQ(&Q1);
system("pause");
}