1.编写queue.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);
//判断是否为空,1代表为空,0代表不为空
int isempty(Q * myqueue);
//入队,吃进去
void enQueue(Q * myqueue, datatype num);
//出队,拉屎,返回值就是拉的
datatype DeQueue(Q * myqueue);
//打印队列所有的元素
void printfQ(Q * myqueue);
//获取开头的一个节点
datatype gethead(Q * myqueue);
queue.c
#include "queue.h"
/*初始化队列*/
void init(Q *myqueue)
{
//代表为空,首尾都为0
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;
}
else
{
//赋值
myqueue->data[myqueue->rear] = num;
//增加一个
myqueue->rear += 1;
}
}
/*出队*/
datatype DeQueue(Q * myqueue)
{
if (myqueue->front == myqueue->rear)
{
return -1;
}
else
{
myqueue->front += 1;
return myqueue->data[myqueue->front - 1];
}
}
//打印队列所有的元素
void printfQ(Q * myqueue)
{
printf("\n");
if (myqueue->front == myqueue->rear)
{
printf("\n你的肠胃为空");
}
else
{
for (int i = myqueue->front; i < myqueue->rear;i++)
{
//显示你的肠胃
printf("%c", myqueue->data[i]);
}
}
}
datatype gethead(Q * myqueue)
{
if (myqueue->front == myqueue->rear)
{
printf("\n肠胃为空,无法找到你要最先拉的屎");
return -1;
}
else
{
//返回第一个节点
return myqueue->data[myqueue->front];
}
}
main.c
#include <stdio.h>
#include <stdlib.h>
#include "queue.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);
system("pause");
}