//简单的队列 #include<stdio.h> #include<stdlib.h> #define datatype int #define N 10 //定义队列结构体 struct queue{ int front;//队头 int endline;//队尾 datatype data[N];//数据 }; typedef struct queue Queue; Queue myQueue = { 0, 0, { 0 } }; //初始化队列 void initQueue(Queue * p); //入队 void enQueue(Queue *pque, datatype data); //出队 void deQueue(Queue *pque); //遍历队列 void printfQueue(Queue *pque); //数组队列只能使用一次,使用之后必须初始化后才可以继续使用 void main(){ Queue *pque = (Queue *)malloc(sizeof(Queue)); initQueue(pque); //插入队列 enQueue(pque,1); enQueue(pque,2); enQueue(pque,8); enQueue(pque,3); enQueue(pque,7); //打印队列 printfQueue(pque); //出队 deQueue(pque); //打印队列 printfQueue(pque); deQueue(pque); //打印队列 printfQueue(pque); system("pause"); } //初始化队列 void initQueue(Queue *pque){ pque->front = pque->endline = 0;//清空队列 } //入队 void enQueue(Queue *pque,datatype data){ //判断队列是否溢出 if (pque->endline<N) { //判断队列是否为空 if (pque->front == pque->endline)//队头和队尾重合表明没有元素 { //初始化队列 initQueue(pque); } pque->data[pque->endline] = data; pque->endline += 1; } else{ return; } } //出队 void deQueue(Queue *pque){ //判断队列是否为空 if (pque->front == pque->endline) { //队列为空 return; } else{ //直接弹出最后一个 printf("弹出的元素是%d\n", pque->data[pque->front]); pque->front+= 1; } } //遍历队列 void printfQueue(Queue *pque){ for (int i = pque->front; i < pque->endline; i++) { printf("%d\n", pque->data[i]); } }
时间: 2024-10-10 14:10:44